我有一個類Catcher,它可以讓你控制遊戲中的動畫片段。我正在嘗試編寫遊戲,以便完成並且可以重新啓動。所以我需要刪除所有內容並返回菜單。應該是一個簡單的事情來解決,但我似乎無法瞭解如何。AS3:如何正確刪除movieclip而沒有錯誤1009溢出?
到目前爲止,我只有ourCatcher.parent.removeChild(ourCatcher);從舞臺上刪除我的movieclip。還有一條if語句,用於阻止將事物放到舞臺上的功能之一。 SoundMixer.stopAll();停止音樂。然後,我將它轉到第3幀這是遊戲畫面。
它看起來很好,但我得到不斷1009錯誤溢出錯誤控制檯中,當我重新啓動遊戲,它超慢。似乎Catcher內移動的功能仍然在運行併產生錯誤,因爲Catcher從舞臺上移開,現在爲空。
我知道我需要取消引用一切與捕手,但我無法找到任何文檔在線做我的情況。每個人似乎都有不同的方法,我嘗試過並且不工作。
在麥田類中的兩個功能我用移動的字符:
public function Catcher(stageRef:Stage)
{
stop();
this.stageRef = stageRef;
key = new KeyObject(stageRef);
addEventListener(Event.ENTER_FRAME, loop, false, 0, true);
}
//movement
public function loop(e:Event):void
{
if (key.isDown(Keyboard.A))
vx -= walkSpeed;
else if (key.isDown(Keyboard.D))
vx += walkSpeed;
else
vx *= friction;
//update position
x += vx;
//speed adjustment
if (vx > maxspeed)
vx = maxspeed;
else if (vx < -maxspeed)
vx = -maxspeed;
//stay inside screen
if (x > stageRef.stageWidth)
{
x = stageRef.stageWidth;
vx = -vx
}
else if (x < 0)
{
x = 0;
vx = -vx;
}
if (key.isDown(Keyboard.A))
{
scaleX = -1;
}
else if (key.isDown(Keyboard.D))
{
scaleX = 1;
}
movement();
// Jumping
jump += gravity;
if (y > stage.stageHeight /1.5)
{
jump = 0;
canJump = true;
}
if (key.isDown(Keyboard.SPACE) && canJump)
{
jump = -10;
canJump = false;
}
y += jump;
}
在那裏我從舞臺上刪除的東西被稱爲CatchingGame其他類,它有其刪除函數對象,我把遊戲放在代碼裏面,當playerlives == 0時。
if (playerLives == 0)
{
stop();
ourCatcher.parent.removeChild(ourCatcher);
SoundMixer.stopAll();
gotoAndStop(3);
}
我可能犯了一個小錯誤,因爲這是我的第一個flash遊戲。任何幫助都非常感謝,因爲這幾乎是完成我的遊戲的最後一步。
嘿,感謝您的快速響應。這確實擺脫了1009錯誤,但現在我得到了2025錯誤。 ArgumentError:錯誤#2025:提供的DisplayObject必須是調用者的子項。我想我可能會把事情混淆在錯誤的地方。 \t在flash.display使用::級DisplayObjectContainer/removeChild之() \t在CatchingGame/removeCatcher() \t在CatchingGame/moveObjects() – Zimbozo
你的地方在那裏存在之外取出孩子。確保removeCatcher位於您創建它的相同框架中 – Gone3d
並且它在創建它的父代中,如果父代也是類。 – Gone3d