0

我一直在玩乒乓球之类的游戏。但是当球击中我在舞台上的一些字母时,一些字母消失了。我的信是movieclip,基本上我正在做这样的if语句:

if(mcBall.hitTestObject(mc2)){      
    removeChild(mc2);
    mc2 = null;
}

我想知道的是,当所有字母消失时,告诉程序完成游戏的最佳方法是什么。我想像这样使用 null 属性: if (mc1 && mc2 && mc3 = null){ gotoscene x } 这可能吗?使用空对象告诉程序去另一个场景?

4

2 回答 2

0

您应该使用一个对象数组(砖块、字母,无论如何),一旦一个对象被击中,将其从屏幕和数组中删除,一旦数组为空,就去任何你想去的地方。

var letters:Array=new Array();
letters.push(mc1); 
// stuff all of your removable objects in a level in here
letters.push(mcN);

然后你反复检查它们中的每一个,如果它们与球相撞,你会这样做:

for (var i:int=letters.length-1;i>=0;i--) {
    var tmc=letters[i]; 
    if (mcBall.hitTestObject(tmc)) {
       tmc.parent.removeChild(tmc);
       letters.splice(i,1);
       if (letters.length==0) { 
           // goto complete code (call a method, that makes the game go "you win")
       }
    } else {
       // do anything with tmc if you want. If not, omit this
    } 
}
于 2013-10-18T07:03:29.613 回答
0

假设您从容器中删除的孩子是您可以使用的唯一孩子if (numChildren == 0){gotoscene x},如果没有唯一的孩子,那么在添加它们进行比较之前对该变量进行抽样。if (numChildren == numChildrenPreInt){//}

另一种方法是将碰撞对象存储在 ArrayCollection 中,实现如下所示:

private var collisionObjs:ArrayCollection = new ArrayCollection();

private function init():void{
collisionObjs.addItem(nc1); //do this for all your objects.
}

private function isComplete():Boolean
{
return (collisionObjs.length == 0);
}

private function detectCollision():void
{
if(mcBall.hitTestObject(mc2)){      
removeChild(mc2);
collisionObjs.removeItemAt(collisionObjs.getItemIndex(mc2));
if (isComplete())
{
//goto complete
}
}
于 2013-10-17T11:06:06.510 回答