我一直在做一个像乒乓球这样的游戏。但是当球击中我在舞台上的一些字母时,有些字母就消失了。我的信是电影剪辑,基本上我正在做这样的 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
}
}