我正在创建一个pacman风格的游戏。我正尝试使用removeChild()移除MovieClip的一个实例。当MovieClip实例“框”击中MovieClip实例“circle”时 - 环将从舞台上移除。使用removeChild(AS3)的错误
我在下面收到以下错误: ArgumentError:错误#2025:提供的DisplayObject必须是调用者的子项。 在flash.display一::级DisplayObjectContainer/removeChild之() 在移动/ eatCircle()
package {
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
public class Move extends MovieClip {
var ScoreObjects:Array = new Array(); // creates ScoreObjects array
private var inertia:int=8; //amount of friction
var score_field:String;
//var point:MovieClip;
// Constructor--------------------------------------------------------------------
public function Move() {
init();
}
// function init -----------------------------------------------------------------
function init():void {
//stage.frameRate=60;
var score_field:String="";
ScoreObjects[0] = new Circle();
ScoreObjects[0].amount = 1; // amount of point
ScoreObjects[0].name = "circle";
stage.addEventListener(Event.ENTER_FRAME, frameloop);
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownEvent);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpEvent);
box.addEventListener(Event.ENTER_FRAME, eatCircle);
wall.addEventListener(Event.ENTER_FRAME, hitWall);
stage.addChild(ScoreObjects[0]); // add Score Objects to stage ------------------------------
trace(ScoreObjects[0]);
ScoreObjects[0].x = 105;
ScoreObjects[0].y = 233;
}
// function eatCircle --------------------------------------------------------------
function eatCircle(event:Event):void {
if (box.hitTestObject(ScoreObjects[0])) {
trace ("I ate the circle");
removeChild(ScoreObjects[0]);
//calcScore();
} else {
trace ("I didn't eat the circle");
}
}
}// end of class
}// end of package
我能够删除的圈子走下舞台 - 做stage.addChild(ScoreObjects [0])不过,我不确定为什么我仍然在输出窗口中收到错误。 ArgumentError:错误#2025:提供的DisplayObject必须是调用者的子项。在move.display :: DisplayObjectContainer/removeChild()上Move/eatCircle() – jc70 2010-09-06 21:30:31
刚刚更新了代码,这个东西正在显示,因为你没有停止你的事件从框中分派,但是你已经从舞台上删除了这个对象,这就是为什么你需要检查它,因为在我的代码案例或另一个将删除事件处理程序像'box.deleteEventListener(Event.ENTER_FRAME,eatCircle);'删除后的孩子。就是这样了。不要忘记接受/评分答案/评论。祝你好运! – Eugene 2010-09-06 22:03:57