我有一个flex应用程序,并使用<mx:SWFLoader>
将flash(SWF)文件嵌入其中。 Flash文件上有一个“退出”按钮。我希望能够处理Flex应用程序上的按钮单击事件。
因此,当单击flash文件中的该按钮时,我想在父Flex应用程序中执行操作。我怎样才能做到这一点?谢谢!
答案 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事件处理程序方法。 我希望,这可以解决你的问题..