カテゴリー
Flash

ActionScript 3.0とActionScript 2.0の混在コンテンツの開発 その2

ActionScript 3.0とActionSc…

ActionScript 3.0とActionScript 2.0の混在コンテンツの開発 その1からの続きです。

とりあえずActionScript3のswfにActionScript2のswfがloadmovie出来ることが解りました。

import flash.display.Loader;
import flash.display.MovieClip;
import flash.net.LocalConnection;
import flash.net.URLRequest;
import flash.events.StatusEvent;
import flash.events.Event;
public class Root extends MovieClip { private var loaders:Loader; private var localconection:LocalConnection;
public function Root():void{ init(); }
private function init():void{ var urlRequest:URLRequest = new URLRequest("as2.swf") loaders = new Loader(); loaders.contentLoaderInfo.addEventListener(Event.COMPLETE,complete) loaders.load(urlRequest) }

たとえばこんな感じで呼んであげれば大丈夫です。

そう、ここまでは簡単なのですが、どうやってActionScript3からActionScript2に話しかければよいでしょうか?

変数的なものはまったくの別世界が広がっているので、お互いにさっぱり参照できません。

その方法とは

ローカルコネクションです!

private function complete(e:Event):void {
	addChild(loaders)
	loaders.name = "AS3LOADER"
	localconection = new LocalConnection();
	localconection.connect("as3")
	localconection.send("ds", "ue", "これはAS3から引数で渡した文字列")
	}

こんな感じで受け渡しが可能です。
swfが同じブラウザ内に複数ある場合でも、自分の上?(中?)に積み上げられている場合でも関係なくやりとりできるのです。

渡せる長さは、たぶん40kバイトぐらいまでだそうです 

(加茂君ありがとう)