2014-05-13 25 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

相关问题