- ベストアンサー
AS3.0による外部swfの制御
- AS3.0でメインのswfのボタンを押すことで、AS2.0の外部swfを再生する方法を教えてください。
- 使用する環境はFlash CS3です。以下のスクリプトを使用しています。 - swf読み込み配置 - swfボタン制御 外部swfを参照するスクリプトがわかりません。お知恵をお貸しください。
- SEOを意識して、AS3.0のメインswfからAS2.0の外部swfを再生する方法を教えてください。Flash CS3を使用しています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ActionScript 3.0 と 2.0 は本来全く互換性がないのですから (=コンパイルされるマシン語が別言語ですから) (=フランス人に日本語で命令するようなものですから) 「普通はできない」です。 ただ,命令を聞く ActionScript 2.0側に, それなりのしくみを作っておけば 「絶対にできない」ではなくなります。 たとえば AS3 の SWF からPHP経由でテキストデータを保存し AS2 の SWF でそのテキストをロードし続け テキストの内容によって動作を変えるとかです。 PHPなどのような他言語を使わず Flash 単独でする場合は LocalConnection を使うのが決まりの手段だと思います。 ◎「test.swf」(ActionScript 2.0 側)スクリプト例↓ //test.swf のメインタイムラインの再生を停止 stop(); //受信用 LocalConnection インスタンス「jusinLC」を作成 var jusinLC:LocalConnection = new LocalConnection(); // 「jusinLC」 に メソッドmoveMovie を定義 jusinLC.moveMovie = function(frm:Number):Void { //フレームfrm から再生 gotoAndPlay(frm); }; // 「jusinLC」 をチャンネル「myChannel」 に接続 jusinLC.connect("myChannel"); ◎「main.swf」(ActionScript 3.0 側)スクリプト例↓ //送信用 LocalConnection インスタンス「sousinLC」を作成 var sousinLC:LocalConnection = new LocalConnection(); //swf読み込み配置 var loader_obj:Loader = new Loader(); var url:URLRequest = new URLRequest("test.swf"); loader_obj.load(url); loader_obj.y = 0; loader_obj.x = 0; stage.addChild(loader_obj); //swfボタン制御 btn.addEventListener(MouseEvent.ROLL_OVER,btn_play); //関数 btn_play の定義 function btn_play(event:MouseEvent):void { //メインswfのムービーリップも動かす MovieClip(root).photo.gotoAndPlay(2); //「myChannel」に接続しているインスタンスに定義した //メソッド「moveMovie」を実行(第3引数:再生開始フレーム) sousinLC.send("myChannel","moveMovie", 2); } LocalConnection は Flash MX から導入されたものです。 ですから ActionScript 1.0 以上の Flash Player 6 以上で使用可です。 ActionScript 3.0 のヘルプ 「LocalConnection」 http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/net/LocalConnection.html しかし ActionScript 2.0 どうし(1.0 どうし)でも 違う Flash Player 用にパブリッシュした SWF をロードすると 変なことになることが結構あるので 基本的にこういうことはあまりしない方が良いいと思います。 上記のスクリプトを用いて作成した 「main.swf」 を見たときのイメージ図↓
お礼
お礼の返事が遅くなってすいません!! やはりAS2.0とAS3.0全然違う物なのですね・・・ ありがとうございました!