2012-02-27 1 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 : 관련없는 유형의 클래스에 대한 값의 암시 적 강제 변형입니다. flash.display : DisplayObject.

주 MXML 파일은 WindowedApplication의 스파크이므로 DisplayObjects의 일부라고 가정합니다.

편집 :

나는 아래와 같은 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을 사용하면 Object 유형의 객체를 반환합니다 (예 : 알아두면, 그 것은 redoundant : P라고 들립니다). 그러나 DisplayObject 인 경우 addPopUp 두 번째 매개 변수. 따라서,이 트릭을 수행해야합니다

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

내가 FlexGlobals.topLevelApplication는 DisplayObject를 반환하지 않는 이유에 대해 100 % 확실하지 않다가, 낮은 수준의 문제가 될 수 있습니다.

1

FlexGlobals.topLevelApplication에서 기본 응용 프로그램 refference있어

mx.core.FlexGlobals.topLevelApplication : 최상위 응용 프로그램 개체에 관계없이 어디 문서 트리에 개체가 실행됩니다. 이 객체의 형식은 spark.components.Application 또는 mx.core.Application입니다.

+0

흠, 이제 다음 오류가 발생합니다. 1118 : 정적 유형 Object를 사용하는 값과 관련없는 유형 인 flash.display : DisplayObject의 암시 적 강제 변형. – Propeller

+0

어떻게 사용 했습니까? –

+0

위의 질문을 수정 코드로 업데이트했습니다. – Propeller