我正在为学校开发一款简单的Flash游戏。在一个级别中,多个敌人产生并且玩家应该射击它们。我使用removeChild()来摆脱被射击的敌人,但当我点击(击中)敌人时,我的舞台上的一切都被移除了;它完全是空白的。
用敌人填充我的舞台的功能如下:
private function Game2():void{
for (var i:uint=0; i<50; i++) {
var man:MovieClip = new man_mc();
man.x=Math.random()*750;
man.y=Math.floor(Math.random()*(70))+350;
addChild(man);
man.addEventListener(MouseEvent.CLICK, getroffen);
}
function'getroffen'检查敌人是否被击中:
public function getroffen(evt:MouseEvent):void{
trace("hit");
this.parent.removeChild(this);
}
这里有点混淆为什么它会删除舞台上的所有东西,而不是只删除我点击的敌人。有帮助吗?非常感谢。
答案 0 :(得分:7)
取决于getroffen()
的位置,您将删除该类(this
指向当前范围对象),因此我猜它可能是Main
类。
您需要执行类似删除功能的操作:
var man:MovieClip = evt.target as MovieClip;
man.parent.removeChild( man );
答案 1 :(得分:3)
而不是this.parent.removeChild(this)
尝试:
evt.currentTarget.parent.removeChild(evt.currentTarget);
这应该可以做到!
事件(mouseEvent)是你的一个敌人的“孩子”,因此移除mouseEvent的目标会移除敌人。