我有一个 flex 应用程序,并使用<mx:SWFLoader>
. Flash 文件上有一个“退出”按钮。我希望能够处理 flex 应用程序上的按钮单击事件。
因此,当单击 Flash 文件中的那个按钮时,我想在父 flex 应用程序中执行一个操作。我怎样才能做到这一点?谢谢!
我有一个 flex 应用程序,并使用<mx:SWFLoader>
. Flash 文件上有一个“退出”按钮。我希望能够处理 flex 应用程序上的按钮单击事件。
因此,当单击 Flash 文件中的那个按钮时,我想在父 flex 应用程序中执行一个操作。我怎样才能做到这一点?谢谢!
如果来自闪存的事件“冒泡”,您可以执行此操作。当您从 Flash 分派事件时,请执行以下操作:
dispatchEvent(new Event("myEventName", true)); // that 'true' for bubbles, in the constructor
然后你应该能够在 Flex 中捕获它,没有问题,使用:
addEventListener("myEventName", handler);
...只要addEventListener
在 SWFLoader 或上方的组件上调用。
如果你不能修改 Flash SWF,或者它是一个完整的黑盒,那么你可以注册一个MouseEvent.CLICK
处理程序useCapture = true
,并检查它是否是正确的按钮:
swfLoader.addEventListener(MouseEvent.CLICK, swfLoader_clickHandler, true, 0, true);
protected function swfLoader_clickHandler(event:MouseEvent):void
{
if (event.target.name == "some_way_to_identify_the_button")
// do X
}
希望有帮助,兰斯
您可以使用 AS3 中的 Loader 类(在 flex 脚本中)来完成。即使你可以动态地做到这一点。在 MXML 中
<mx:SWFLoader id="myLoader" width="500" source="swf/kabin42.swf"
complete="initSwf();"/>
private function initNestedAppProps2():void {
var loadedMc:MovieClip = MovieClip(myLoader.content);
loadedMc= MovieClip(myLoader2.content);
//access the button with instance name myButton:
loadedMc.myButton.addEventListener(MouseEvent.CLICK, onBtnClick);
}
private function onBtnClick(event:MouseEvent):void{
Alert.show("button clicked 2");
}
单击 myButton 时,将调用 onBtnClick 事件处理程序方法..我希望这可以解决您的问题..