从嵌入式Flash控件控制flex应用程序

时间:2010-03-21 01:36:22

标签: flex flash flex4 embedded-resource

我有一个flex应用程序,并使用<mx:SWFLoader>将flash(SWF)文件嵌入其中。 Flash文件上有一个“退出”按钮。我希望能够处理Flex应用程序上的按钮单击事件。

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

2 个答案:

答案 0 :(得分:0)

如果闪光灯中的事件“气泡”,您可以执行此操作。从Flash调度事件时,请执行以下操作:

dispatchEvent(new Event("myEventName", true)); // that 'true' for bubbles, in the constructor

然后你应该能够在Flex中捕获它没问题,用:

addEventListener("myEventName", handler);

...只要在SWFLoader上或上方的组件上调用addEventListener

如果您无法修改Flash SWF,或者它是一个完整的黑盒子,那么您只需注册一个MouseEvent.CLICK处理程序useCapture = true,并检查它是否是正确的按钮:< / p>

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
}

希望有所帮助, 兰斯

答案 1 :(得分:0)

您可以使用AS3中的Loader Class(在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事件处理程序方法。 我希望,这可以解决你的问题..