2013-10-17 165 views
0

我一直在做像pong一樣的遊戲。但是當我在舞臺上出現的一些字母碰到球時,一些字母就消失了。我的信件是影片剪輯,基本上我在做一個if語句是這樣的:完成後完成遊戲

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

我想知道什麼是最好的方式告訴程序完成比賽時,所有的字母消失。 我認爲使用空屬性是這樣的:如果 (MC1 & & MC2 & & MC3 = NULL){ gotoscene X } 這可能嗎?使用空對象來告訴程序去另一個場景?

回答

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