0

タイムラインから動的なムービー クリップを取得しようとしています。

キー フレームの 1 つ (この場合は 88 と想定) にインスタンス名「blah」のムービー クリップを含む長さ不明のタイムラインがあります。
何をしても、上記のムービークリップへの参照を取得できません。

これが私が試したことです:

trace(blah); // null
trace(this.blah); // null
trace(getChildByName("blah")); // null

if(currentFrame == 88)
    trace(getChildByName("blah")); // null

for(var i:int=0; i<numChildren; ++i)
    trace(getChildAt(i));
/* Returns:
 * [object MovieClip]
 * [object Shape]
 * null
 * [object TextField]
 */

// Assuming the first movie clip is the correct one
trace(getChildAt(0).name); // instance?? where ?? are random digits, I'm expecting "blah"

コードを介してタイムラインで生成されたオブジェクトをインポートする方法を明らかにしてもらえますか?

4

4 に答える 4

0

リラヌナ、

前もってお詫び申し上げます - あなたが Flash にどれだけ詳しいかわかりませんので、私の提案は非常に基本的なものかもしれません...

まず、どのようにムービー クリップを追加し、名前を付けましたか? IDEから追加しましたか?

もしそうなら、私がよく犯す間違いの 1 つは、名前を付けるときに間違ったものを選択してしまうことです。つまり、クリップ A に名前を割り当てる代わりに、クリップの親に名前を割り当てます。さらに悪いことに、オブジェクト名ではなく、うっかりフレーム ラベルを割り当ててしまいます。

あなたが説明する動作(「何とか」という名前ではなく、ムービークリップには「instance##」という名前が付いています)は、IDEを介してクリップを追加することと一致していますが、名前を付けていません-「instance##」はFlash IDEのデフォルトです自分で名前を付けていないオブジェクトの命名スキーム。

だから、あなたが持っていると思う名前を実際に割り当てているかどうかを再確認します.

一方、そのクリップをプログラムで追加した場合は、以前に使用したコードを提供できますか?

乾杯、マット

于 2008-12-27T17:13:58.403 に答える
0

フレーム 88 に移動したばかりの場合は、初期化する前に使用しようとしている可能性があります。追加してみてください:

stage.addEventListener(Event.ADDED, onAdded);

function onAdded(event:Event):void
{
    trace("new object "+event.target);
    trace("new object name "+event.target.name);
}

そしてそれが作成されたかどうか/いつ作成されたかを確認します

于 2008-12-20T12:38:01.400 に答える
0

swf をロードすると、その中のインスタンス名は直接利用できなくなります。(タイムラインの設定によっては) gotoAndStop() または gotoAndPlay() を使用して移動する場合も同じことが当てはまります。これにより、Event.ADDED (swf を追加する場合)、または Event.ENTER_FRAME または Event.RENDER (gotoAndStop/gotoAndPlay の場合) をリッスンする回避策を実装する必要があります。

正確な詳細はわかりませんが、http://bugs.adobe.com/jira/browse/FP-43のコメントには役立つリンクが含まれています。

gotoAndPlay/Stop の問題には別の回避策があります。フレーム 1 にキーフレームを追加して、インスタンス名を設定し、シンボルを非表示にして、ムービークリップ全体ですべてのシンボルを使用できるようにします。状況によっては、これはリスナーの回避策と同じくらい面倒かもしれませんが、場合によってはよりクリーンな場合もあります。

于 2008-12-23T14:28:58.990 に答える
0

これは、Flash Player 9 で発生した非同期の問題です。簡単な回避策は、フレームを変更した後、ENTER_FRAME イベントの最初の送出を待つか、ADDED イベントを使用して、オブジェクトがいつ表示リストに追加されたかを知ることです。幸いなことに、この問題は Flash Player 10 で修正されています。

http://www.bytearray.org/?p=236

于 2008-12-27T17:47:57.507 に答える