我正在制作这种冬季花球游戏,它给了我这个错误,但只有当我击中第一个物体时。
这是代码:
package{
import flash.display.MovieClip;
import flash.events.*;
public class Brandstof extends MovieClip {
var _root:Object;//Dit symboliseert de hoofd-tijdlijn
public function Brandstof() {
addEventListener(Event.ADDED, beginClass);
addEventListener(Event.ENTER_FRAME, eFrame);
}
private function beginClass(e:Event):void{
_root = MovieClip(root);
if(_root.brandstofAantal == 1){//Ervoor zorgen dat de brandstoftankjes, als het de eerste is, random op de stage komen
this.x = Math.random()*525;
_root.brandstofLaatsteCoord = this.x;
} else {
//Om ervoor te zorgen dat de nieuwe bel niet te ver weg is van de eerder, plaats met een afstand van 250px
this.x = _root.brandstofLaatsteCoord + (Math.random()*500)-250;
if(this.x > 537.5){//Ervoor zorgen dat de brandstoftonnetjes binnen de stage blijven
this.x -= 250;
} else if (this.x < 12.5){
this.x += 250;
}
}
this.y = _root.brandstofTop;//zorgen dat de y-waarde niet op de stage zit
}
private function eFrame(e:Event):void{
this.y += 3;//Ervoor zorgen dat de brandstoftonnetjes langzaam naar beneden gaan
if(this.hitTestObject(_root.mcRaket)){//ervoor zorgen dat mcRaket omhoogspringt als ie een object raakt
_root.characterSpringen = true;
_root.springSnelheid = _root.springSnelheidLimiet*-1;//springsnelheid resetten
this.removeEventListener(Event.ENTER_FRAME, eFrame);//de listeners weghalen en van stage verwijderen
_root.brandstofHolder.removeChild(this);
}
}
}
}
这是错误:
ArgumentError:错误#2025:Het opgegeven DisplayObject moet een onderliggend item van de aanroeper zijn。 在flash.display :: DisplayObjectContainer / removeChild() 在Brandstof / eFrame()
我是一个新手,我正在按照教程。
答案 0 :(得分:0)
错误是因为这一行:
_root.brandstofHolder.removeChild(this);
根据Flash播放器的说法,_root.brandstofHolder
不是this
的父级。
更安全的方法是:
if(this.parent) this.parent.removeChild(this);
那样this
只有当它出现在displayList(有一个父对象)时才被删除,无论你设置父对象是什么,你都要从正确的对象中删除它。