2012-03-14 6 views
0

問題の原因が、私がコードを置いていた場所(ルートではない)から「ステージ」にアクセスできない場所になる前に、このエラーを修正しました。私はそれを削除し、それはうまくいったが、彼らがアタッチされたイベントリスナーはもう動作しませんでした。私はこれらのイベントリスナーが必要ですが、私は 'ステージ'を入れようとします。それは動作しません。助けて?ルートファイル以外のステージにアクセスするにはどうすればよいですか?

(このファイルはまだルートだった)。これは、それが働いていたとき、私が持っていたものです:

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

は今、私のコードはこれです、そしてそれが実行されます、ちょうどイベントリスナーが動作せず:

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

答えて

5

要素がステージに追加されるまで、プロパティは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

+1

@psuedoFREAK - いいえ、オブジェクトの初期化時に関数外の行を実行します。オブジェクトが初期化されると、最終的にステージに追加されます。 – sch

-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:nullオブジェクト参照のプロパティまたはメソッドにアクセスできません。 [C:¥Users¥Callum¥Desktop¥Flash¥Dance Dance¥ \t at playscreen()[C:\ Users \ Callum \ Desktop \ Flash \ダンスダンス破棄\ classes \ playscreen.as:85] \t at documentClassあなたはヌルのオブジェクトを持っていますか? – CallumJHays

+0

あなたはヌルのオブジェクトを持っていますか? _stage変数ですか?プロパティを呼び出す前にこの変数をトレースできますか? – ThdK

関連する問題