5

願わくば、これが同じ質問を 2 回したと見なされないことを願っています...

だから私は、を使用してサブswfファイルをロードする外部インデックスswfを持つFlash Webサイト(AS2内)に取り組んでいますloadMovie("subfoo1.swf", placeToShowSwf)。これらは次に、ロードするコンテンツを指示する xml ファイルをロードします。すべてがうまく機能しますが、1 つまたは 2 つの変数に対して 1 つまたは 2 つの異なる値を持つサブ SWF ファイルを開くボタンをインデックス SWF に追加したいと考えています。

残念ながら、というボタンを追加するだけです

loadMovie("foo1.swf", placeToShowSwf);
placeToShowSwf.openProject(x);

openProject(x)完全にロードされていないファイルで呼び出されたためだと思います。コードに問題がないことはわかっています。別の場所で呼び出すだけのボタンを作成しましたがplaceToShowSwf.openProject(x)、問題はありません。

解決方法が 2 つありますが、どちらもどうすればよいかわかりません。

  1. クラスのコンストラクターのように、swf ファイルが作成されるときに目的の値を変更します。しかし、swf ファイル用のある種のコンストラクター関数はありますか? 言うだけでもいいし、loadMovie(new foo1.swf(x), placeToShowSwf)それと同等のことでもいい。
  2. swf (およびおそらく xml) がロードされるまで待ってから、 を呼び出しますplaceToShowSwf.openProject(x)

これらの解決策のいずれか、またはおそらく私のエンドウ豆のような脳が理解できなかった他の方法について、誰かが何らかのガイダンスを得ましたか?

4

4 に答える 4

0

2番はあなたがすべきことです。残念ながら、あなたはまだ ActionScript 1 の土地で立ち往生していますが、ActionScript 3 は数年前から出ています。したがって、正確な構文はわかりませんが (ActionScript 2 でフラッシュを開始したため)、#2 (SWF のロードが完了するのを待ってから、何をすべきかを指示する) は私が行うことです。

AS2 を少し学習してもかまわない場合 (通常、AS1 と AS2 を混在させても問題ありません)、MovieClipLoader を検討する必要があります。サブ SWF のロードが完了したことを知らせるコールバックを提供します。

于 2008-11-06T20:58:54.657 に答える
0

サブムービークリップにアクセスしようとする前にonLoadInitコールバックを待つ必要があることを除いて、あなたが行った方法は正しい方法です。

于 2009-04-11T14:45:59.807 に答える
0

fenomasの答えはかなりまともですが、AS2を使用している場合、MovieClipLoaderクラスを使用してswfsをロードする「ハック」の少ない方法もあります。リッスンできるイベントがあり、onLoadInit イベントに興味があります。読み込みプロセスが初期化されたときにトリガーされ、onLoadComplete を使用する必要があると直感的に感じるかもしれませんが、そうではありません。

onLoadComplete は、すべてのバイトのダウンロードが完了するとトリガーされます onLoadInit は、すべてのバイトのダウンロードが完了し、ロードされた swf のクラスが初期化されるとトリガーされます (ロードされた swf のメソッドとプロパティにアクセスできます)。

as2.0 ドキュメントの MovieClipLoader > onLoadInit のコード サンプルを見てください。

http://livedocs.adobe.com/flash/8/main/wwhelp/wwhimpl/js/html/wwhelp.htm?href=Part4_ASLR2.html

幸運を

于 2009-04-11T14:39:03.630 に答える
0

これにアプローチする 3 つの簡単な方法:

(1) - コマンドの方向を逆にします。つまり、親 SWF には次のものがあります。

projectType = "x";
loadMovie("foo1.swf", placeToShowSwf);

子 (ロードされた) SWF には次のものがあります。

openProject( _parent.projectType );

あなたはアイデアを得る。クロスドメイン スクリプティングの問題に対処しない限り、子 SWF が別のサーバーからロードされている場合、これは機能しません。

(2) - MC がロードされるのを待ちます。残念ながら、AS2 には使用できる組み込みのロード イベントがないため、一般的な方法は次のように onEnterFrame を使用することです。

someMovieClip.onEnterFrame = function() {
    if ( path_to.placeToShowSwf.openProject ) {
        path_to.placeToShowSwf.openProject(x);
        this.onEnterFrame = null;
    }
}

これは、メソッドが利用可能になったらすぐに呼び出したい場合です。子 SWF が完全に読み込まれるまで待ちたい場合は、子 SWFgetBytesLoaded()getBytesTotal()メソッドを確認します。

(3) MovieClipLoader のようなコンポーネントを使用して読み込みを行います。ドキュメントに従ってください。表面的にはこれは (2) と似ていますが、詳細は MovieClipLoader クラス内に隠されています。

于 2008-11-10T09:57:37.130 に答える