我正在构建一个用于动作脚本2 flash应用程序的flex 4容器。
我使用<mx:SWFLoader>
组件来加载游戏。
我知道我可以从动作脚本3应用程序中捕获事件甚至自定义事件。
动作脚本3(不是2)的工作示例:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955"
minHeight="600" creationComplete="init()">
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import Red5Event;
private function handleRed5Event(e:Red5Event):void {
Alert.show("yay");
}
private function init():void {
this.fileSwf.content.addEventListener(Red5Event.CONTROL_TYPE
,handleRed5Event);
}
]]>
</fx:Script>
<mx:SWFLoader id="fileSwf" source="file.swf" />
</s:Application>
然后在flash应用程序中我扩展事件类,添加适当的控件类型并将bubbles
设置为true,因此每当我调度一个事件时,它都可能被flex应用程序捕获。
我明白使用as2我可以使用以下示例调度自定义事件:
import mx.events.EventDispatcher;
class Sender {
// these three lines are needed to use EventDispatcher
public var addEventListener:Function;
public var removeEventListener:Function;
public var dispatchEvent:Function;
public function Sender() {
// this line must be in the constructor of the class
EventDispatcher.initialize(this);
// dispatch an event once per second
}
public function sendEvent():Void {
dispatchEvent({type:"xpoControl"});
trace("event sent!");
}
}
我可以以某种方式在动作脚本2 flash应用程序中发送一个事件,flex 4容器能够捕获吗?
谢谢!
答案 0 :(得分:1)
经过大量的阅读......我是什么 请求可能无法使用。
实际上,有解决方法。你是正确的,因为安全限制,你试图完成这个的方式实际上是不可能的。但是,您可以通过LocalConnection类构建我喜欢称为marshaller-adapter的内容。您需要在AS2中使用一个方法,该方法使用localConnection与flex 4端进行通信。您将不得不使用简单类型并更通用地传递Red5Event的属性,但您应该能够使用自定义'marshaller-adapter'完成所需的操作。
祝你好运, 杰里米