我有一个柔性应用程序,并使用<mx:SWFLoader>
在其中嵌入了一个闪存(SWF)文件。 Flash文件上有一个“退出”按钮。我希望能够处理Flex应用程序上的按钮单击事件。从嵌入式Flash控制器控制柔性应用程序
因此,当单击Flash文件中的该按钮时,我想在父Flex应用程序中执行一个操作。我怎样才能做到这一点?谢谢!
我有一个柔性应用程序,并使用<mx:SWFLoader>
在其中嵌入了一个闪存(SWF)文件。 Flash文件上有一个“退出”按钮。我希望能够处理Flex应用程序上的按钮单击事件。从嵌入式Flash控制器控制柔性应用程序
因此,当单击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中的加载程序类(在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事件处理方法将被调用.. 我希望,这个解决您的问题..
@viatroops:哎,这没有奏效。我确实可以访问fla。 fla执行下面这行代码:dispatchEvent(new Event(“myEvent”),true));'我在Flex中的SWFLoader上有一个'swfloader_completeHandler'事件处理程序。在这个方法中,我有'swfloader.addEventListener(“myEvent”,nextStepFunction);'。但是现在,当我点击swf文件中的退出按钮(当它嵌入到flex应用程序中时),什么也没有发生。我做错什么了吗? – Aishwar 2010-03-21 08:31:25
尝试它,因此dispatchEvent看起来像这样:'dispatchEvent(new Event(“myEvent”,true));'而不是this'dispatchEvent(new Event(“myEvent”),true))',并尝试设置useCapture listener为true,如下所示:'addEventListener(“myEventName”,处理程序,true,0,true);'。让我知道这是否有效。 – 2010-03-21 09:56:17
@viatroops。糟糕,这是一个错字。是的,那是我为dispatchEvent所做的。我尝试了第二个addEventListener,那也没有工作。 – Aishwar 2010-03-21 10:23:43