2012-02-27 17 views
0

私は私のFlexプロジェクトにAS3のクラスを持っている:AS3クラス内の親MXMLへの参照?

package system 
{ 
    import mx.managers.PopUpManager; 

    import ui.Eula; 

    public class Dialogs 
    { 
     public function Dialogs(){} 

     public static function showEula():void { 
      var eulaWindow:Eula = new Eula; 
      PopUpManager.addPopUp(eulaWindow,MyMainMXML,true); 
     } 
    } 
} 

MyMainMXMLが私の基本MXMLファイルです。それは私のクラスを介してそれを参照することはできません。それ、どうやったら出来るの?コンパイラのエラーは次のようになります。

1067:関連しない型へのClass型の値の暗黙的強制。flash.display:DisplayObject。

メインのMXMLファイルは、WindowedApplicationのスパークですので、DisplayObjectsの一部と見なしました。

EDIT:

私は以下のようなFlexGlobalsを使用してみましたが、それは1118というエラー放つ:おそらく無関係なタイプは、flash.displayに静的な型のオブジェクトと値の暗黙の強制:DisplayObjectを。

package system 
{ 
    import mx.core.FlexGlobals; 
    import mx.managers.PopUpManager; 

    import ui.Eula; 

    public class Dialogs 
    { 
     public function Dialogs(){} 

     public static function showEula():void { 
      var eulaWindow:Eula = new Eula; 
      PopUpManager.addPopUp(eulaWindow,FlexGlobals.topLevelApplication,true); 
     } 
    } 
} 
+1

Flexglobals.topLevelApplicationを使用してください – RIAstar

答えて

1

FlexGlobals.topLevelApplicationを使用すると、あなたに(redoundantの音ええ、私は知っている、:P)Object型のオブジェクトを返します。ただし、DisplayObjectの場合は2番目のパラメータaddPopUp。したがって、これはトリックを行う必要があります。

PopUpManager.addPopUp(eulaWindow,FlexGlobals.topLevelApplication as DisplayObject,true); 

私はFlexGlobals.topLevelApplicationはDisplayObjectを返さない理由を約100%わからないんだけど、低レベルの問題になる可能性があります。

1

あなたは

FlexGlobals.topLevelApplication

mx.core.FlexGlobals.topLevelApplicationからメインアプリケーションrefferenceを得たことができます。トップレベルのアプリケーションオブジェクトに関係なく、どこドキュメントツリーのあなたのオブジェクトが実行されます。このオブジェクトのタイプはspark.components.Applicationまたはmx.core.Applicationです。

+0

ええと、今度は私に次のエラーが表示されます:1118: – Propeller

+0

どうやってこれを使いましたか? –

+0

私は上記の私の質問を私の変更されたコードで更新しました。 – Propeller