2012-03-14 157 views
0

我解決了這個錯誤之前,問題的來源是'我的代碼'(不是根目錄)'stage'無法訪問。我刪除了它,並且運行良好,但是他們所關注的Event偵聽器不再工作。我需要這些事件聽衆,但是當我嘗試放置'舞臺'時。回到infront它不會工作。幫幫我?如何訪問根文件之外的階段?

這是我有什麼,當它的工作(當該文件仍然是根):

 stage.addEventListener(KeyboardEvent.KEY_DOWN, keypressed); 
     stage.addEventListener(KeyboardEvent.KEY_UP, keyreleased); 

現在,我的代碼是這樣的,它運行,只是沒有工作的事件監聽器:

 addEventListener(KeyboardEvent.KEY_DOWN, keypressed); 
     addEventListener(KeyboardEvent.KEY_UP, keyreleased); 

回答

5

stage屬性爲null,直到元素被添加到舞臺。所以你應該首先聽到事件Event.ADDED_TO_STAGE,當你收到它,你可以添加你的其他事件監聽器:

addEventListener(Event.ADDED_TO_STAGE, addedToStage); 

function addedTostage():void 
{ 
    removeEventListener(Event.ADDED_TO_STAGE, addedToStage); 
    stage.addEventListener(KeyboardEvent.KEY_DOWN, keypressed); 
    stage.addEventListener(KeyboardEvent.KEY_UP, keyreleased); 
} 
+0

所以它得到錯誤,因爲在執行它們之前,閃存正在讀取所有文件的全部內容?很酷 - 感謝:P – CallumJHays 2012-03-14 09:59:32

+1

@psuedoFREAK - 不,它會在初始化對象時執行函數外部的行。對象初始化後,它最終會被添加到舞臺上。 – sch 2012-03-14 10:02:50

-1

使用此訪問階段:

var myMC:MovieClip = new MovieClip(); 
addChild(myMC); 
var _stage:Stage = myMC.stage; 
trace("the AS3 Stage.width: "+_stage.stageWidth); 
trace("returns the width of objects on stage: "+_stage.width); 
trace("the AS3 Stage.height: "+_stage.stageHeight) 
trace("returns the height of objects on stage: "+_stage. height); 

來源:http://www.iheartactionscript.com/stage-access-outside-of-documentroot-in-as3/

+0

我已經試過這種方法。我仍然得到這個錯誤: TypeError:錯誤#1009:無法訪問空對象引用的屬性或方法。 ()[C:\ Users \ Callum \ Desktop \ Flash \ Dance Dance destruction \ classes \ playscreen.as:85] \t at documentClass()[C:\ Users \ Callum \ Desktop \ Flash \ Dance Dance( )\t at playscreen破壞\類\ documentClass.as:12] (所有在playscreen.as:85是addeventlistener,爲此,現在使用_stage.addEventListener ....) – CallumJHays 2012-03-14 09:44:05

+0

因此,你有一個對象是空的?是_stage變量嗎?你可以在調用屬性之前跟蹤這個變量嗎? – ThdK 2012-03-14 09:47:52

相關問題