メイン コーダーズルーム【スクリプト系】
addChild()にて表示リストに追加したmcを入れ替えたい。【removeChild();が効きません。】 | 投稿するにはまず登録を |
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
| 投稿者 | スレッド |
|---|---|
| えり | Åê¹ÆNo.43669 投稿日時: 2009-10-10 12:10 |
新米 ![]() ![]() 居住地: 投稿: 15
使用環境:
win,mac Flash CS4 |
addChild()にて表示リストに追加したmcを入れ替えたい。【removeChild();が効きません。】 初歩的な質問で失礼をいたします。。
addChild()したmcを入れ替えたい(既にaddChild()したmcがあったらば、削除してからまたaddChild()したい。)場合でございますが、removeChild();ではうまくいかず悩んでおります。。 ---------------------------------------------* //まずc_spaceというmcを生成。 var c_space:MovieClip=new MovieClip(); MovieClip(parent).addChild(c_space); c_space.x =0; c_space.y =0; //menu_btn_01を押したら、c_spaceの子供にc_all_wを追加。 menu_btn_01.addEventListener(MouseEvent.CLICK,list_works) function list_works(evt:MouseEvent):void{ c_space.removeChild(); //c_spaceに子供がいたら一度削除。。。したい。 var c_all_w:all_contents_works = new all_contents_works(); c_space.addChild(c_all_w); } //menu_btn_02を押したら、c_spaceの子供にc_all_sを追加。 menu_btn_02.addEventListener(MouseEvent.CLICK,list_sound) function list_sound(evt:MouseEvent):void{ c_space.removeChild(); //c_spaceに子供がいたら一度削除。。。したい。 var c_all_s:all_contents_sound = new all_contents_sound(); c_space.addChild(c_all_s); } ---------------------------------------------* なぜremoveChild();が効かないのでしょうか。。。 これではc_spaceにaddChild()したmcが差し替えにならず、どんどん重なっていきます。 |
| 野中文雄 | Åê¹ÆNo.43670 投稿日時: 2009-10-10 12:37 |
ちょんまげら ![]() ![]() 居住地: 東京 投稿: 4166
使用環境:
CS4 .4.11 Vista Home Premium (SP1) |
Re: addChild()にて表示リストに追加したmcを入れ替えたい。【removeChild();が効きません。】 文法が間違っているからです。スクリプトは山勘で書かず、[ヘルプ]を確かめましょう。
引用: riedynaさんは書きました: [追記] なお、子どもがいるかどうかは、 DisplayObjectContainer.numChildrenプロパティで調べられます。また、DisplayObjectContainer.removeChildAt()メソッドが使える処理内容かもしれません。ということで、やはり[ヘルプ]に親しむことが大切です。 ![]() |
| えり | Åê¹ÆNo.43678 投稿日時: 2009-10-11 3:54 |
新米 ![]() ![]() 居住地: 投稿: 15
使用環境:
win,mac Flash CS4 |
Re: addChild()にて表示リストに追加したmcを入れ替えたい。【removeChild();が効きません。】 ありがとうございます!!
やまかんにならないよう少しずつでも勉強いたします! removeChild();にて削除する子オブジェクトの指定をして ありませんでした。。。 以下のように組み直しいたしましたが、一応入れ替え出来るのですが、 ” ArgumentError: Error #2025: 指定した DisplayObject は呼び出し元の子でなければなりません。 at flash.display::DisplayObjectContainer/removeChild() at m_btn_01_05/list_works() ”というエラーが出てしまいます。 ------------------------------------------------------* //まずc_spaceというmcを生成。 var c_space:MovieClip=new MovieClip(); MovieClip(parent).addChild(c_space); c_space.x =0; c_space.y =0; var c_all_s:all_contents_sound = new all_contents_sound(); var c_all_w:all_contents_works = new all_contents_works(); //menu_btn_01を押したら、c_spaceの子供にc_all_wを追加。 menu_btn_01.addEventListener(MouseEvent.CLICK,list_works) function list_works(evt:MouseEvent):void{ c_space.addChild(c_all_w); c_space.removeChild(c_all_s); } //menu_btn_02を押したら、c_spaceの子供にc_all_sを追加。 menu_btn_02.addEventListener(MouseEvent.CLICK,list_sound) function list_sound(evt:MouseEvent):void{ c_space.addChild(c_all_s); c_space.removeChild(c_all_w); } ------------------------------------------------------* 以上のようなエラーが出てしまっても問題無いのでしょうか。。。 |
| 野中文雄 | Åê¹ÆNo.43680 投稿日時: 2009-10-11 8:35 |
ちょんまげら ![]() ![]() 居住地: 東京 投稿: 4166
使用環境:
CS4 .4.11 Vista Home Premium (SP1) |
Re: addChild()にて表示リストに追加したmcを入れ替えたい。【removeChild();が効きません。】 まず、以下のテスト用ステートメントを追加したり、コメントアウトして、その結果をお確かめください。そしてつぎに、私の先の回答の[追記]を、もう1度お読みください。
引用: riedynaさんは書きました: |
| えり | Åê¹ÆNo.43686 投稿日時: 2009-10-13 14:00 |
新米 ![]() ![]() 居住地: 投稿: 15
使用環境:
win,mac Flash CS4 |
Re: addChild()にて表示リストに追加したmcを入れ替えたい。【removeChild();が効きません。】 ありがとうございました!
ヘルプもアドバイスも拝見いたしまして、 頂きましたヒントにて、numChildrenプロパティにて子オブジェクトの数を調べながら、常にnumChildrenプロパティが1を返しているのを 確認しまして、以下のスクリプトでできました。 しかし なんとも苦し紛れなスクリプトでございます・・・・・・。 怒られそうですが山カン的になってしまいました。(泣) ---------------------------------------------* var c_space:MovieClip=new MovieClip(); MovieClip(parent).addChild(c_space); c_space.x=0; c_space.y=0; var c_all_s:all_contents_sound = new all_contents_sound(); var c_all_w:all_contents_works = new all_contents_works(); menu_btn_01.addEventListener(MouseEvent.CLICK,list_works); function list_works(evt:MouseEvent):void { c_space.addChild(c_all_w); c_space.removeChildAt(0); c_space.addChild(c_all_w); // if (contains(c_all_s)) c_space.removeChild(c_all_s); trace(c_space.numChildren); } menu_btn_02.addEventListener(MouseEvent.CLICK,list_sound); function list_sound(evt:MouseEvent):void { c_space.addChild(c_all_s); c_space.removeChildAt(0); c_space.addChild(c_all_s); // if (contains(c_all_w)) c_space.removeChild(c_all_w); trace(c_space.numChildren); } -------------------------------------------* しかしながら2回も記述している、 c_space.addChild(c_all_s); c_space.addChild(c_all_w); は書きたくないのですが、、これが無いと MCの追加が(+−ゼロになってしまう??)されません。。 もう少しヒントをいただけませんでしょうか。。。 お忙しい中誠に誠に恐縮です。。 |
| 野中文雄 | Åê¹ÆNo.43688 投稿日時: 2009-10-13 18:04 |
ちょんまげら ![]() ![]() 居住地: 東京 投稿: 4166
使用環境:
CS4 .4.11 Vista Home Premium (SP1) |
Re: addChild()にて表示リストに追加したmcを入れ替えたい。【removeChild();が効きません。】 「テスト用」ステートメントは、あくまでエラーの理由を考えるためのものです。その原因はおわかりになりましたか? 引用: Fumioは書きました: 「ヒント」はすでに申し上げたとおり、「子どもがいるかどうかは、 DisplayObjectContainer.numChildrenプロパティで調べられ」るということです。 引用: riedynaさんは書きました: [追記] あるいは、DisplayObjectContainer.contains()メソッドでも、対応できるのではありませんか? 引用: riedynaさんは書きました: |
| えり | Åê¹ÆNo.43694 投稿日時: 2009-10-14 11:40 |
新米 ![]() ![]() 居住地: 投稿: 15
使用環境:
win,mac Flash CS4 |
解決いたしました!__Re: addChild()にて表示リストに追加したmcを入れ替えたい。【removeChild();が効きません。】 せんせい!
以下で解決いたしました! ============================================* menu_btn_01.addEventListener(MouseEvent.CLICK,list_works); function list_works(evt:MouseEvent):void { c_space.addChild(c_all_w); if (c_space.numChildren==2){ c_space.removeChildAt(0); } } ============================================* 教えて頂きました便利なnumChildrenプロパティと、 メソッドはremoveChildAt()の方を使い、 if文でシンプルに出来ました!! いろいろaddChild()にて表示リストに追加した子供の入れ替え や、addChild()の入れ子コンテンツなど、がんばって練習いたしてみたいと思います!! 本当に貴重なお時間をくだすってありがとうございました。 感激です!!! |
| ひろゆき | Åê¹ÆNo.43695 投稿日時: 2009-10-14 11:46 |
ちょんまげら ![]() ![]() 居住地: 大阪密林 投稿: 3492
使用環境:
10.3.9Flex 2 SDK ![]() Pro8.0 Pro7.2FlashPlayer 7.0r24/8.0r24/9.0r115 Safari 1.3.2 Firefox 2.0.0.20 MacOS 9.2.2 Flash 4/5 |
Re: 解決いたしました!__Re: addChild()にて表示リストに追加したmcを入れ替えたい。【removeChild();が効きません。】
|
| 野中文雄 | Åê¹ÆNo.43696 投稿日時: 2009-10-14 12:26 |
ちょんまげら ![]() ![]() 居住地: 東京 投稿: 4166
使用環境:
CS4 .4.11 Vista Home Premium (SP1) |
Re: 解決いたしました!__Re: addChild()にて表示リストに追加したmcを入れ替えたい。【removeChild();が効きません。】
|
| ひろゆき | Åê¹ÆNo.43697 投稿日時: 2009-10-14 12:36 |
ちょんまげら ![]() ![]() 居住地: 大阪密林 投稿: 3492
使用環境:
10.3.9Flex 2 SDK ![]() Pro8.0 Pro7.2FlashPlayer 7.0r24/8.0r24/9.0r115 Safari 1.3.2 Firefox 2.0.0.20 MacOS 9.2.2 Flash 4/5 |
Re: 解決いたしました!__Re: addChild()にて表示リストに追加したmcを入れ替えたい。【removeChild();が効きません。】 引用:
Fumioさんは書きました: DisplayObjectContainer.contains() で、子だけでなく、孫、ひ孫, ... と true を返すんですね。 ヘルプを見てはいましたが、見落としておりました。
|
| スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
| 投稿するにはまず登録を | |



ログイン




CS4
.4.11
Vista Home Premium (SP1)



Pro8.0
Pro7.2
