hitesting武器

时间:2011-08-24 17:38:06

标签: actionscript-3 actionscript

我的舞台上有一个名为dude的movieclip,其中moviclip是一个带有一个名为axeframe的影片剪辑的框架,另一个名为ax的影片剪辑。我想要做的是在axeframe a中做一个hittest,这样当斧头(只有斧头不是角色)击中 舞台 上的敌人(命名敌人)时会消失。这是我的代码:

addEventListener(Event.ENTER_FRAME, axehit);

function axehit(event:Event):void {

if (axe.hitTestObject(enemy)) {
 removeChild(enemy.stage)
}
}

它给了我这个错误

1120:访问未定义的属性enemy.if(axe.hitTestObject(enemy)){

1120:访问未定义的属性enemy.removeChild(enemy.stage)

1 个答案:

答案 0 :(得分:0)

你不能在没有任何进一步说明的情况下引用enemy(它会假设敌人是你放置代码的动画片段的孩子。请改用stage.enemy,然后{ {1}},或this代替this.parent。 (假设敌人是axe上的动画片段,你发布的代码在stage内 此外,您应该将axe更改为removeChild(enemy.stage),您应该查看变量范围。


编辑:不。 对不起,只是假装你没有读过(忘了你不能只通过舞台引用对象)

对你说实话,这也是我开始的方式,但这不是闪存编码的正确方法。首先,您应该尝试将所有代码保留在主时间轴上,而不是单独的动画片段中,以便更好地协同工作。一旦掌握了它,你应该查看面向对象的编程。它确实增加了工作流程,使您能够创建更大,更复杂的脚本。

更多编辑:

所以要将放在主时间轴上,需要以下内容:

stage.removeChild(stage.enemy)

哪个更干净,更易读(也更容易找到)。 (假设stage.addEventListener(Event.ENTER_FRAME, loop); function loop(event:Event):void { if (axe.hitTestObject(enemy)) { this.removeChild(enemy) } } axe是主舞台上的动画片段