0


0

私はFlashとASが初めてです。 私は、2つのswfファイルを1つのas2ともう1つのas3に持っていなければなりません。 )動的に。 どうしたらいいですか。

ここに私のコード
var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.COMPLETE、handleComplete); addChild(ローダー); loader.load(new URLRequest( "games.swf")); loader.x = 50。 loader.y = 125。

function handleComplete(event:Event):void {

trace( "swf loaded"); }

上記のコードは問題なく動作しており、swfファイルもロードされています。 swf as2ファイルから個々のムービークリップにアクセスする方法.. ムービークリップの名前(ID)もすべて知っています。

この問題から克服するために私を助けて…​事前に感謝します..

1 Answer


2


Event.COMPLETEの代わりにEvent.INITを使用することをお勧めします。 INITは* load *がCOMPLETE *の後*にトリガーを取得し、*読み込まれたswf内のすべてのクラス/インスタンスは初期化されて使用可能になります。

var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(Event.INIT、handleInit); addChild(ローダー);

function handleInit(e:Event):無効{var as2Movie:AVM1Movie = e.target.content as AVM1Movie; }

Loaderクラスのcontentプロパティを通してロードされたコンテンツにアクセスできます。 あなたがas2映画をas3映画にロードしているのでそうではありません、いくつかの制限が適用されます:

"AVM1Movieは、ActionScript 1.0または2.0を使用するAVM1ムービークリップを表す単純なクラスです。 (AVM1は、ActionScript 1.0および2.0の実行に使用されるActionScript仮想マシンです。 AVM2は、ActionScript 3.0を実行するためのActionScript仮想マシンです。Flash Player 8以前のSWFファイルがLoaderオブジェクトによって読み込まれると、AVM1Movieオブジェクトが作成されます。 AVM1Movieオブジェクトは、DisplayObjectクラスから継承されたメソッドとプロパティ(x、y、widthなど)を使用できます。 ただし、AVM1MovieオブジェクトとAVM2オブジェクト間の相互運用性(メソッドの呼び出しやパラメータの使用など)は許可されていません。

AVM2 SWFファイルによってロードされるAVM1 SWFファイルにはいくつかの制限があります。

ロードされたAVM1Movieオブジェクトは、AVM1 SWFファイルおよびそれによってロードされたすべてのAVM1 SWFファイルの擬似ルートオブジェクトとして機能します(ActionScript 1.0のlockrootプロパティがtrueに設定されている場合と同様)。 AVM1ムービーは、常にどの子供でもActionScript 1.0または2.0のコード実行の最上位にあります。 lockrootプロパティがロードされたAVM1 SWFファイルに設定されていない限り、ロードされた子の_rootプロパティは常にこのAVM1 SWFファイルです。 AVM1コンテンツはファイルをレベルにロードできません。 たとえば、loadMovieNum( "url"、levelNum)を呼び出してファイルをロードすることはできません。 AVM2 SWFファイルによってロードされたAVM1 SWFファイルは、これに別のSWFファイルをロードすることはできません。 つまり、自分自身で別のSWFファイルを読み込むことはできません。 ただし、このSWFファイルによってロードされた子Spriteオブジェクト、MovieClipオブジェクト、またはその他のAVM1 SWFファイルはこれにロードできます。 "as3 docsから。

詳しくは、http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3 / flash / display / AVM1Movie.html [AMV1Movie Reference]を参照してください。

あなたがas3からas2ムービーを呼び出したい場合は、2つのswfs間の通信を確立するためにローカル接続を使用する必要があります。

http://www.gskinner.com/blog/[Grant Skinner]は、このようなことのために http://www.gskinner.com/blog/[SWF Bridge]という便利なものを書きました。状況(as2からas3への通信が簡単)。 それは試みに値します。

がんばろう!