いつもお世話になります。
ActionScript3でサイト制作を行なっています。
初歩的な質問で大変恐縮ですが、addChildとremoveChildの処理に関するご質問です。
予め「a_mc」、「b_mc」、「bg_mc」というムービークリップを作成し、それぞれをリンケージしておきます。
1.ENTER_FRAME内の条件Aの中で「bg_mc」上に「a_mc」をaddChildします。
2.条件Bにあるhoge関数の中で「bg_mc」上に「b_mc」をaddChildします。
3.「a_mc」は不要なのでremoveChildしたいのですが、下記のエラーが出てしまいます。
【ArgumentError: Error #2025: 指定した DisplayObject は呼び出し元の子でなければなりません。】
上記のエラーの原因がよく理解できなかたので、色々試してみましたが、
例えば、条件Aの中でステージ上にaddChildしたオブジェクト「this.addChild(c)」は、
条件Bのhogeの中でremoveChildすることができました。
上記の3の処理ができない原因は何でしょうか?
また、上記の処理を実現するにはどのような処理方法が適切でしょうか?
是非ご教授ください。
宜しくお願い申し上げます。
// 背景MC
var bg:MovieClip = new bg_mc();
// コンテンツMC
var a:MovieClip;
var b:MovieClip;
this.addEventListener(Event.ENTER_FRAME, visibleCheck);
function visibleCheck(eventObject:Event):void {
if(条件A) {
a = new a_mc();
bg.addChild(a);
} else if (条件B) {
hoge();
function hoge():void {
b = new b_mc();
bg.addChild(b);
bg.removeChild(a);
}
}
}
No.1ベストアンサー
- 回答日時:
ケース1:
条件Aで一度も実行されないのに条件Bが実行されている
aには何も入っていないのでエラーになる
ケース2:
条件Bで複数回実行されている
aはすでに一回目の条件Bでの実行で
removeChildされているのでエラーになる
対処
bg.removeChild(a)
↓
try{bg.removeChild(a)}catch(e){}
ケース3:
条件Aで複数回実行されたのち条件Bでも複数回実行されている
最後にaddChildしたa_mc以外は変数aでの参照が切れているので
変数aの参照ではremoveChildできない
対処
a_mcのインスタンスへの参照は配列にしておくなりしておき
複数のa_mcのインスタンスを全部参照できるようにしておく
// 背景MC
var bg:MovieClip = new bg_mc();
// コンテンツMC
var a_arr:Array;
var b:MovieClip;
this.addEventListener(Event.ENTER_FRAME, visibleCheck);
function visibleCheck(eventObject:Event):void {
if(条件A) {
a_arr.unshift(new a_mc());
bg.addChild(a_arr[0]);
} else if (条件B) {
hoge();
function hoge():void {
b = new b_mc();
bg.addChild(b);
while(a_arr.length>0)bg.removeChild(a_arr.pop());
}
}
}
こんなカンジでしょうか
H240S18B73様
ご回答いただきましてありがとう御座います。
内容を調べた所、別の原因だったようです。
取り急ぎポイント付与させていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ウディタで作ったゲームを公開...
-
uwscでExcelに自動記入
-
FLASH MX で作成した、flashやA...
-
Flash Playerのサポートが終了
-
Flash対応のサイトが表示されない
-
Flashのウィンドウの設定は簡単...
-
ActionScript3.0で画面を揺らす...
-
FlashBuilder4からデータベース...
-
FLASHでゲームを作っていた人は...
-
この曲はなんでしょう?
-
laptop go2からの買い替え、lap...
-
スクリップト
-
私のコンピューター上のファイ...
-
arduino プログラムについて
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
フラッシュゲームアーカイブ2
-
ウェブサイトで Flash が事実上...
-
Flashコンテンツを使ったWebサイト
-
Form内のselectを連動させるに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Tweenerの繰り返しについて
-
外部swf内関数の使い方を教えて...
-
as3 ムービークリップにビット...
-
AS3.0 ループを利用したムービ...
-
複数mcのランダム再生とmc指定...
-
photoshopで書いた四角の枠の中...
-
Pythonを使ってせん断応力図、...
-
python ボタンを押すと複数の関...
-
VBAで改行の入ったデータの正規...
-
【VB.NET】別Formのボタンが押...
-
別のアプリケーションのテキス...
-
VBScriptでMsgBoxのYesNoボック...
-
変数に256文字以上のテキストを...
-
テキストボックスの中身をリセ...
-
UWSCのBTN関数について。
-
テキストボックスにセルの値を...
-
else if文の順序を変えることに...
-
POIでのテキストボックス作成に...
-
【Photoshop】レイヤー効果の境...
-
VB6.0で、フォームから、別のフ...
おすすめ情報