1

我有一个 flex 应用程序,并使用<mx:SWFLoader>. Flash 文件上有一个“退出”按钮。我希望能够处理 flex 应用程序上的按钮单击事件。

因此,当单击 Flash 文件中的那个按钮时,我想在父 flex 应用程序中执行一个操作。我怎样才能做到这一点?谢谢!

4

2 回答 2

0

如果来自闪存的事件“冒泡”,您可以执行此操作。当您从 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
}

希望有帮助,兰斯

于 2010-03-21T01:57:02.937 回答
0

您可以使用 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 事件处理程序方法..我希望这可以解决您的问题..

于 2011-04-01T13:00:12.807 回答