我試了很多個小時,編碼和搜索解決方案,我的問題沒有效果。stage.removeChild(this)返回一個錯誤 - ActionScript 3.0
錯誤: TypeError:錯誤#1009:無法訪問空對象引用的屬性或方法。
簡報: 我正在創建一個遊戲,一直在隨機間隔等背景雲產卵器上工作,其中一個想法是讓雲在她的壽命達到0後消失(我們從100倒數到0)。項目採用30 FPS。有趣的是,導致錯誤的雲消失了(也許它仍然存在,但有0 alpha?),但接下來的雲,不會給出任何錯誤,一切正常。
所以,現在是時候了一些代碼和解釋:
Game類 - 文檔類
// VARIABLES
var clouds:Clouds = new Clouds();
static var cloudsTimerDelay:Number = 3000;
static var cloudsTimer:Timer = new Timer(cloudsTimerDelay);
// CONSTRUCTOR
cloudsTimer.addEventListener("timer", spawnCloud);
cloudsTimer.start();
// CALLED FUNCTION
function spawnCloud(e:Event){
stage.addChildAt(new Clouds,1);
}
雲CLASS
// VARIABLES
var fadeSpeed:Number = 0.05;
var lifeSpan:Number = 100;
// CONSTRUCTOR
addEventListener("enterFrame", enterFrame);
// CALLED FUNCTIONS
function enterFrame(e:Event)
{
this.lifeSpan--;
this.x += this.velocity;
if (this.lifeSpan < 0)
{
this.alpha -= this.fadeSpeed;
if (this.alpha <= 0)
{
kill(); // ERROR IN THIS FUNCTION
}
}
}
function kill()
{
removeEventListener("enterFrame", enterFrame);
stage.removeChild(this); // ERROR ERROR ERROR
}
標誌着我只是上述錯誤的地方,這是stage.removeChild(this)導致的問題(這是什麼調試r說)。 這段代碼的主要思想是在舞臺上創建對象,設置時間間隔(計時器部分),當它創建時,對象開始的是它自己的enterFrame函數。它用於移動雲層,每幀從生命週期中減去1,當它達到0時,衰減開始於通過常量值改變alpha值,當alpha低於0時,kill函數應該進入,消除eventlistener和從舞臺上刪除雲。 任何想法爲什麼會發生此錯誤?我會非常感謝任何解決方案! 另外我非常抱歉,如果我寫的東西壞的方式,但這是我的第一個帖子在堆棧:)
乾杯!
您在'var clouds:Clouds = new Clouds();'遊戲構造函數中創建一個「Clouds」實例。你用它做什麼? –