0

アクション スクリプト 2 フラッシュ アプリケーション用の 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>

次に、フラッシュ アプリケーションでイベント クラスを拡張し、適切なコントロール タイプと設定bubblesを true に追加します。そのため、イベントをディスパッチするたびに、おそらくフレックス アプリケーションによってキャッチされます。

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 フラッシュ アプリケーションでイベントを何らかの方法でディスパッチできますか?

ありがとう!

4

1 に答える 1

1

たくさん読んだ後..私が要求することは不可能かもしれません。

実際には、回避策があります。これを達成しようとしている方法は、セキュリティ上の制限のために実際には不可能であるという点で、あなたは正しいです。ただし、LocalConnectionクラスを使用して、私がマーシャラーアダプターと呼ぶものを作成することはできます。フレックス4側と通信するためにlocalConnectionを使用するAS2のメソッドが必要になります。単純な型を使用し、Red5Eventのプロパティをより一般的に渡す必要がありますが、カスタムの「marshaller-adapter」を使用して必要なことを実行できるはずです。

幸運を祈ります、ジェレミー

于 2010-07-13T19:12:31.230 に答える