アプリ版:「スタンプのみでお礼する」機能のリリースについて

ActionScript3のremoveChildについて、お教えください。
FlashCS5 windowsです。
どうぞ、よろしくお願いします。

順を追って、ご説明します。

ムービークリップ「テストA」「テストB」「テストC」の3つを作成します。
テストC→プロパティ→ActionScript用に書き出し→クラス で、TestCとクラス名を付けます。

ムービークリップ「テストA」のインスタンス名をtestA_mcとして、ステージに配置します。
testA_mc内のタイムラインに、
//----------
var testC_mc:TestC = new TestC();
addChild(testC_mc);
//----------
と記述します。

ムービークリップ「テストB」を、ステージに配置します。
テストB内のタイムラインにremoveChildを書いて、
testA_mc内のtestC_mcをremoveChildしたいのですが、
どのように書けば、良いでしょうか、、、?

※不可能な場合は「不可能」と教えていただけますと、助かります。

よろしくお願いいたします。

A 回答 (1件)

まずは大前提の条件が必要です。



『必ず先に testA_mc 内の
var testC_mc:TestC = new TestC();
が実行されていて
その後に 「テストC」の removeChild が実行される』

という場合について書きます。



また「テストA(testA_mc)」と「テストB」は
両者ともメインタイムライン(root) のステージ上にあるものとします。



この前提がある場合
「テストB」内のフレームには
次のように通常の 絶対パス でターゲットを指定するのが1つの方法例です。

MovieClip(root).testA_mc.removeChild(MovieClip(root).testA_mc.testC_mc);


また次のように相対パスで指定しても良いでしょう。

MovieClip(this.parent).testA_mc.removeChild(MovieClip(this.parent).testA_mc.testC_mc);



あまり使いませんが
場合によっては次のようにして stage まで遡った 絶対パス でターゲットを指定しても良いかもしれません。

MovieClip(stage.getChildAt(0)).testA_mc.removeChild(MovieClip(stage.getChildAt(0)).testA_mc.testC_mc);
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます^^

ずっと間違えて
MovieClip(root).testA_mc.removeChild(testC_mc);
と書いて、動かない理由が解らなかったのですが、

MovieClip(root).testA_mc.removeChild(MovieClip(root).testA_mc.testC_mc);
と教えていただき、その理由が解りました。

また、stageまで遡る書き方も、ありがとうございます。
私はまだ表示リスト部分の理解が不十分で、色々調べていたところですので、
とても参考になります。

助かりました。
ありがとうございます^^

お礼日時:2011/10/21 22:40

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!