您可以使用静态Application.application.yourPublicMethodName()或.yourPublicPropertyName = n直接调用Application,但您也可以考虑使用事件框架,以保持组件松散耦合.由于您的组件根据定义是事件调度程序,因此您只需从其中调度事件,并让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>
Run Code Online (Sandbox Code Playgroud)
......对于应用程序,如下所示:
<?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>
Run Code Online (Sandbox Code Playgroud)
组件类中的Event元数据标记告诉编译器组件调度flash.events.Event-type事件("buttonClicked"),它将其公开为MyComponent标记上的事件; 然后,您需要做的就是为该事件连接一个监听器,并通过事件的currentTarget属性,您可以访问该组件的所有公共数据.
我想我会为你提供一个有趣的选择.希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
9169 次 |
| 最近记录: |