2011-01-10 11 views
0

私は2つのファイルを持っています:アプリケーションのMain.mxmlとMyObject.asの1つです。 mxmlでMyObjectのインスタンスを作成し、そのすべてのpublic関数をmxmlから呼び出すことができます。しかし何らかの理由でmxmlで宣言された関数をMyObjectクラスから呼び出す必要がある場合はどうなりますか?どうやってするか?クラスからmxml関数を呼び出す方法は?

おかげ

(それは右、アプリケーションを継承しますが、正確などのクラスがそれである?)私は、このオブジェクトにクラスをmain.mxmlへの参照を渡すことができると思ったが、私は正確なクラスはそれが何であるかを見つけ出すことができませんでした

答えて

3

これはMainタイプです(これはmxmlファイルの名前をとります)。あなたはそれに静的変数とgetterメソッドを追加することができます。

private static var _instance : Main; 

public static function get instance() : Main { 
    return _instance; 
} 

次に、アプリケーションが終了した後にインスタンスがthisを参照してみましょう:

private function applicationCompleteHandler():void 
{ 
    _instance = this; 
} 

は、あなたの<mx:Application>タグにapplicationComplete="applicationCompleteHandler"を設定することを忘れないでください。 その後、プログラムのどこからでもMain.instanceを呼び出して、メソッドと変数にアクセスすることができます。

+0

コメントありがとうございます。私はそれを試して、それが私のために働くかどうかを教えてくれるでしょう。 – mimic

+0

ありがとう、それは私のために働いた。 – mimic

0

Main.mxmlでMyObjectクラスをインスタンス化する場合は、メソッドを関数としてオブジェクトに渡すことで、Mainのメソッドへのアクセスを実現することもできます。

あなたはMain.mxmlに機能を持っていると仮定します。

private function doSomething():*{ 
    ... 
} 

MyObject.asで適切なセッターで:

private var _mainFunction:Function; 

public function set mainFunction(f:Function):void 
{ 
    _mainFunction = f; 
} 

あなたがMyObjectにクラスをインスタンス化するとき、あなたがメソッドを渡すことができますmxml:

<*:MyObject mainFunction='doSomething'/> 

これで、MyObject.asコードで_mainFunctionを呼び出すだけですあなたがそれを必要とするときはいつでも。

もちろん、アプリケーションで複数のメソッドや変数にアクセスする必要がある場合は、Weltraumpiratの提案がより効率的になります。

+0

ありがとう...もう一度 – mimic

関連する問題