完成后完成游戏

时间:2013-10-17 10:46:14

标签: actionscript-3 null pong

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

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

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

2 个答案:

答案 0 :(得分: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
}
}

答案 1 :(得分:0)

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

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
    } 
}