2011-12-14 6 views
0

を交換した後、私はActionScriptで以下のスニペット(Itemがムービークリップである)に似て2いくつかのコードを持っている:

_root.createEmptyMovieClip("Temp",_root.getNextHighestDepth()); 
_root.Item.swapDepths(_root.Temp); 
_root.Temp.removeMovieClip(); // This doesn't work ! 

を私は質問がクリアされていると思います。深さを交換した後にTempを削除することはできません(そうでない場合はうまく動作します)。

私はまた、次の(しかし、無駄に)を試してみました:

depth = Item.getDepth(); 
_root.createEmptyMovieClip("Temp",_root.getNextHighestDepth()); 
_root.Item.swapDepths(_root.Temp); 
_root.getInstanceAtDepth(depth).removeMovieClip(); // Doesn't work ! 

Tempを取り除く方法についての任意の考えを?

答えて

1

「は、removeMovieClip()は動的にのみ作成されたムービークリップのために働きます」。 スワップされたMovieClip Itemは、タイムラインで手動で作成されました。したがって、スワップ後、Tempzone of depthsの範囲内にあり、Flashではシンボルの動的削除がサポートされていません。

TempItem1 = Item.duplicateMovieClip("Item1", someDepth);の間の深度を入れ替えると、removeClip()が機能しました。

0

コードの下に与えられたとしてみてください:

_root.createEmptyMovieClip("Temp",_root.getNextHighestDepth()); 
_root.Item.swapDepths(_root.Temp); 
removeMovieClip(_root.Temp); 

あなたはActionScriptコードを使用して、ダイナミックムービークリップを作成している場合。 XXXXXX.removeMoveiClip();の代わりにremoveMovieClip(XXXXXX);関数を使用する必要があります

注: - XXXXXXは、ActionScript 2.0コードを使用してランタイムで作成されるMoveiClipのインスタンス参照です。

理由:私はTempのMovieClipの不滅の背後に隠された理由を考え出し

+0

私が言ったように、問題はswapDepths()関数の後に発生します。その行がなければ、XXXXXX.removeMovieClip()は完全に動作します。 – eternalthinker

+1

はい、交換後、AVM1に表示リストの問題があります。だからそれは起こるでしょう。したがって、removeMovieClip(_root.Temp)を使用する必要があります。 交換する前に動作します。 ActionScript 2.0で配列、表示リスト、MovieClipの子オブジェクト管理を学ぶ必要があります。 – Mrugesh

+0

私は上記の答えとして実際の問題を更新しました。実際には、質問をする前にremoveMovieClip()のすべての可能な形式を試しました! – eternalthinker