2011-07-21 19 views
0

ここでは、取引があります。 私は、.flaファイルから呼び出すMainクラスを持っています。ライブラリ内のオブジェクトを "actionscriptのためのエクスポート"に設定するまでは、すべて正常に動作します...ステージがもう機能しなくなった後、ステージは "null"を返します。Stage null ActionScript 3 Flash CS5 ActionScriptの書き出し

私はフラッシュcs5を使用しています。フラッシュの初期バージョンでは私には起こりません。

英語については申し訳ありません...私は十分に明確であることを望みます。

コードサンプル:

package com { 

import flash.display.MovieClip; 

public class Teste extends MovieClip { 

    public function Teste() { 
     trace(stage)// traced null 
    } 
} 
} 

私は私が作る手順を説明しようとするでしょう。 - そのテストクラスを作成します。 - .flaファイルを開き、.flaファイルのプロパティの[クラス]フィールドにそのクラスを追加します。 - 作成してMovieClipし、それをActionscriptから書き出しようとする。 ここで問題が発生します...私がそれをしたとき、MovieClipをライブラリにエクスポートしたため、ステージがNullを返すようになりました。 o.O

+0

あなたは 'ステージが今'「ヌル」を返すについての詳細を説明することができますか?たぶんあなたはステージのテストのコードを投稿しますか? – shanethehat

+0

コードサンプルを掲載します。 – toinsane

答えて

1

理由は、負荷があまりないときは、ステージがすぐに利用できるようになったためです。 Actionscriptのために書き出しを追加したので、読み込みにはさらに1ミリ秒かかるかもしれません。

ステージが存在するかどうかを確認し、ステージが存在するのを待ってから参照してください。それがあなたのドキュメントクラスであれば、ステージオブジェクトが存在する前にこのコードが初期化されていることを良いチャンスがある

package com { 

import flash.display.MovieClip; 

public class Teste extends MovieClip { 

    public function Teste() { 
     if(!stage) addEventListener(Event.ADDED_TO_STAGE, _addedToStage) 
     else _addedToStage(); 
    } 

    private function _addedToStage(e:Event = null) 
    { 
     trace(stage)// traced null 
    } 
} 
} 
+0

ええ、ちょっと解説する答えを編集しました。 – zachzurn

+0

+1の入力が速くなります:) – shanethehat

+0

ハハ、ありがとう!私たちはどちらも同じ答えをしました。 – zachzurn

0

はこれを試してみてください。私は推測しているだけですが、動作の変更は、最初のフレームに定義をロードし、何らかの遅延の原因となる 'actionscript'クラスのエクスポートによって発生すると考えています。

が存在し、ステージを待ってみてください。

package com { 

import flash.display.MovieClip; 

public class Teste extends MovieClip { 

    public function Teste() { 
     if(stage) { 
      init(); 
     } else { 
      addEventListener(Event.ADDED_TO_STAGE,init); 
     } 
    } 

    private function init(evt:Event = null):void { 
     removeEventListener(Event.ADDED_TO_STAGE,init); 
     //stage should now exist 
     trace(stage); 
    } 
} 
} 
関連する問題