完成后完成游戏



我一直在做一个像乒乓球这样的游戏。但是当球击中我在舞台上的一些字母时,有些字母就消失了。我的信是电影剪辑,基本上我正在做这样的 if 语句:

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

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

假设从容器中删除的子项是您可以使用的唯一子项 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
}
}

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

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

相关内容

  • 没有找到相关文章

最新更新