2009-01-23 76 views

回答

7

您可以使用靜態Application.application.yourPublicMethodName()或.yourPublicPropertyName = n直接調用應用程序,但也可以考慮使用事件框架來保持組件鬆散耦合。由於你的組件按照定義是一個事件調度器,所以你可以簡單地從它內部派發一個事件,讓你的Application類監聽這個事件。

在MXML,看起來這樣的事情,對於組件類:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="400" height="300"> 

    <mx:Metadata> 
     [Event(name="buttonClicked", type="flash.events.Event")] 
    </mx:Metadata> 

    <mx:Script> 
     <![CDATA[ 

      public var someValue:int = 0; 

      private function buttonClick():void 
      { 
       someValue = 1; 
       dispatchEvent(new Event("buttonClicked")); 
      } 

     ]]> 
    </mx:Script> 

    <mx:Button label="Click Me" click="buttonClick()" /> 

</mx:Canvas> 

...和應用程序,就像這樣:

<?xml version="1.0" encoding="utf-8"?> 
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*"> 

    <mx:Script> 
     <![CDATA[ 

      import mx.controls.Alert; 

      private function myComponent_buttonClicked(event:Event):void 
      { 
       Alert.show(event.currentTarget.someValue.toString()); 
      } 

     ]]> 
    </mx:Script> 

    <local:MyComponent buttonClicked="myComponent_buttonClicked(event)" /> 

</mx:Application> 

組件中的事件元數據標籤類告訴編譯器組件調度一個flash.events.Event類型的事件(「buttonClicked」),它將它作爲MyComponent標籤上的一個事件公開;那麼,您只需爲該事件連接一個偵聽器,並通過事件的currentTarget屬性,即可訪問組件的所有公共數據。

只是想到我會提供一個有趣的替代雅。希望能幫助到你!

0

得到它;只需要導入mx.core.Application;

相關問題