我一直在玩像乒乓球这样的游戏。但当球击中我在舞台上的一些字母时,一些字母消失了。我的信件是movieclip,基本上我正在做这样的if语句:
if(mcBall.hitTestObject(mc2)){
removeChild(mc2);
mc2 = null;
}
我想知道的是,当所有字母消失时,告诉程序完成游戏的最佳方式是什么。 我想像这样使用null属性: if(mc1&& mc2&& mc3 = null){ gotoscene x } 那可能吗?使用null对象告诉程序转到另一个场景?
答案 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
}
}