2014-05-13 94 views
0

我正在創建一個AS3中的隱藏對象遊戲。大多數情況下它工作正常。我所看到的唯一問題是,我希望代碼將十個對象拉到一個單詞列表中供用戶在場景中查找。我希望列表也是隨機的,所以遊戲不會太平常。現在,我在這個場景中有大約30個物體,但是如果它拉出任何物體,它最多隻能拉三個單詞列表。誰能告訴我我要去哪裏?如何將定義數量的剪輯拖放到舞臺上?

var obArr:Array = new Array(); 
    var randArray:Array = new Array(); 
    var chkCnt:Number=10; 

    stage.addEventListener(Event.ENTER_FRAME, setupStage); 
    stage.addEventListener(MouseEvent.CLICK, clickOb); 

    //set up current stage 
    function setupStage(e:Event) { 
    chkCnt=10; 
    randArray.length=0; 
    obArr=[]; 
//count the objects on stage 
for (var n=0; n<gb1.numChildren; n++) { 
    //get the children 
    var ob=gb1.getChildAt(n); 
//only take movie clips 
    if (ob is MovieClip) { 
//only count the movie clips that have name declared 
    if (ob.myname!=null) { 
//push to array 
    obArr.push(MovieClip(ob)); 
     } 
    } 
} 
//clear the list 
nameslist.text=""; 
//build objects list 
for (n=0; n<obArr.length; n++) { 
    //add the name of object 
    nameslist.appendText(String (obArr[n].myname)); 
    nameslist.appendText("\n\n"); 
} 
//this is not needed anymore; 
stage.removeEventListener(Event.ENTER_FRAME, setupStage); 

}

//stage was clicked; 
    function clickOb(e:MouseEvent) { 
    var clicked=false; 
//check which object was clicked 
for (var n=0; n<obArr.length; n++) { 
    //add the name of object 
    if (obArr[n].hitTestPoint(mouseX,mouseY,true)) { 
     //object is clicked 
     clicked=true; 
     //hide 
     obArr[n].visible=false; 
     //play sound 
     ping.play(); 
     //remove from array 
     obArr.splice(n,1); 
    } 
} 
//rebuild text list 
if (clicked) { 
    //clear the list 
    nameslist.text=""; 
    //build objects list 
    for (n=0; n<obArr.length; n++) { 
     //add the name of object 
     nameslist.appendText(String (obArr[n].myname)); 
     nameslist.appendText("\n\n"); 
    } 
    //check if array is empty meaning all objects were removed; 
    if (n==0) { 
     GB2Unlock.visible=true; 

    } 
} 

}

+1

它最容易發佈.fla – BadFeelingAboutThis

回答

0

嘗試列出對象obArr,例如:

trace(obArr.length); 
for (var i:int = 0; i < obArr.length; i++) { 
    trace(obArr.name, obArr.myname); 
} 

記住getChildAt只返回對兒童的對象的在執行時給出父母。因此,如果您稍後添加某個對象以在其他幀上播放,則這些對象將不會被您的方法找到。

+0

舞臺本身是一個動畫片段,並且所有對象都放置在該片段中。每個對象包含三個相同的對象,以出現在三個給定的位置。例如,一隻蝙蝠可能出現在樹幹上,屋頂上或一塊木頭上。對象中也有自己的腳本。該代碼如下: – user3634038

+0

'code'stop(); var randEnemy:Number; var myname:String; var cnt:Number = 20; var chk:Boolean = false;如果(parent.parent.chkCnt!= cnt){ } randEnemy = Math.floor(Math.random()* 4 + 1); \t爲(VAR升:編號= 0;升 user3634038

+0

case 3: \t \t \t \t parent.parent.chkCnt ++; \t \t \t \t myname =「Vampire Bat」; \t \t \t \t gotoAndStop(3); \t \t \t \t break; \t \t \t殼體4: \t \t \t \t parent.parent.chkCnt ++; \t \t \t \t myname =「Vampire Bat」; \t \t \t \t gotoAndStop(4); \t \t \t \t break; \t \t} \t} }我不確定對象拉的錯誤是在這個代碼還是原始的。我已經嘗試列出它們的名稱,並得到了相同的結果。 – user3634038

相關問題