代码之家  ›  专栏  ›  技术社区  ›  ufk

flex 4:swfloader as2游戏,我能抓到一个使用mx.events.eventspatcher发送的customvent吗?

  •  0
  • ufk  · 技术社区  · 15 年前

    我正在为操作脚本2 Flash应用程序构建一个Flex4容器。 我用 <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 如果是这样,那么每当我分派一个事件时,它可能会被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!");
       }
    }   
    

    我是否可以以某种方式分派flex 4容器能够捕获的动作脚本2 flash应用程序中的事件?

    谢谢!

    1 回复  |  直到 15 年前
        1
  •  1
  •   jeremy.mooer    15 年前

    读了很多书之后……我什么 请求可能不可能。

    实际上,还有一些变通办法。您是正确的,因为安全限制,您试图实现这一点的方式实际上是不可能的。但是,您可以通过LocalConnection类构建我喜欢调用的封送拆收器适配器。您需要在AS2中有一个使用本地连接与flex 4端通信的方法。您将不得不使用简单的类型并更一般地传递red5event的属性,但您应该能够使用自定义的“marshaller适配器”完成所需的工作。

    祝你好运, 杰瑞米