• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:子MCから別の子MCを参照する方法)

子MCから別の子MCを参照する方法

このQ&Aのポイント
  • FlashCS3・CS5でAS3の環境で親MCにクラス名をつけてリンケージし、子MCを配置しています。
  • 子MC Aのタイムラインで子MC Bを参照したいが、Bが未定義のため参照できないというエラーが発生しています。
  • 親側から子に値を与える形に変えることで解決が可能ですが、実際に子から親に行き、別の子を参照する方法はあるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

1、 MCの名前についてプロパティパレットでつけたインスタンス名は 基本的にstageからのパスであり、MCがaddChildされた後じゃないと機能しない 2、 1フレーム目のスクリプトはMCクラスインスタンスが 生成された直後、addChildされる前に実行される 以上から1フレーム目でインスタンス名によってMCを参照する場合は Event.ADD_TO_STAGEイベントを待つとかします ちなみにタイムラグ出来ちゃいますけど 2フレーム目にスクリプトを書くようにしても 動くかもしんないです

fun_wizard
質問者

お礼

ご回答ありがとうございます! なるほどこのためにこのEvent.ADD_TO_STAGEイベントが用意されているのですね! ありがとうございます

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 子swfから親swfのstageを参照したいです

    親swf(a.swf)のアクションスクリプトで子swf(b.swf)を読み込んでいます。 フルウィンドウのFlashを作る勉強中です。 親swfには stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; などの指定がしてあります。 そして、子swf(b.swf)内で親swf(a.swf)のstageをターゲットとしたイベントリスナーを使いたいのですが、 リスナー関数のアクションがうまく動いてくれません。 (リスナー関数のターゲット指定の方法が間違っているだと思うのですが、結果としてリスナー関数が正常に動かずy座標の値が意図した位置に表示されないのだと思います。) 以下のサイトを参考に試行錯誤中です。 http://riptac.net/html/memo/memo_actionscript/memo_actionscript_233/ MovieClip(root.parent).funcOya(); と言う、親に記述された関数の参照方法を特に参考にして 親のステージを指定しようと思いたったのですが… 『強制型変換に失敗しました。…flash.display.MovieClip に変換できません。』 とエラーが出てしまいます。 同じ事をしているように思えてしまうのですが… どのように指定したら良いのでしょうか。 どうぞご教授のほど宜しくお願い致します。 ※FlashCS4、AS3、Windowsで作業しています。 a.swf------------------------------------------------------- var bLoader:Loader = new Loader(); var bUrl:String = "b.swf"; var bLoader_mc:MovieClip; bLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, funcCompB); bLoader.load(new URLRequest(bUrl)); function funcCompB(e:Event):void{ bLoader_mc = MovieClip(bLoader.content); addChild(bLoader_mc); } b.swf------------------------------------------------------- //移動させる背景画像 var bgMC:MovieClip=new BgMC(); addChild(bgMC); bgMC.x=0; //親swfをムービークリップ化 var oyaMC:MovieClip=MovieClip(root.parent); //ウィンドウがリサイズするたびに位置を合わせる oyaMC.stage.addEventListener(Event.RESIZE, resizefunc); function resizefunc(event:Event):void{ bgMC.y=oyaMC.stage.stageHeight; }

  • 子フォームから親フォームのオブジェクトを参照したい。

    こんばんわ。 いまVB.Net2005でプログラミングしている者です。 子フォームから親フォームのオブジェクトを参照したいのですが, うまくいきません。 親フォームにListBox1を置き, ここに入力された内容を 子フォームで下記のように参照しようとしました。 Dim 子フォーム As New 子フォーム Label1.Text = 親フォーム.ListBox1.SelectIndex としたのですが, 親フォームでListBox1に0以外のリストを選択したのに, 子側に来ると親フォーム.ListBox1.SelectIndexの値が 0になってしまい,親側での選択内容が反映されません。 どうすれば正しく参照できるでしょうか? 教えてください。よろしくお願いします。

  • MC内から_rootへのgotoAndPlay

    初めての投稿です。 宜しくお願い致しますm(__)m FlashCS3、AS2.0を利用です。 _rootで15個位のレイヤーに分け格レイヤーにMCを置き、その中でオブジェクトの制御を行うにホームページのトップ画面を作りました。 ASを1フレーム目に記述するとバグが発生する可能性があると聞いたので、 _rootのみASは2フレーム目に記述したので、ホームページのトップとしては_rootの2フレームしか使っていません。 _rootに swfの読み込み。 stop(); var loader = new MovieClipLoader (); loader.loadClip("Window_scroll.swf", _root.Window_Pic_MC); レイヤーの1つにmp3を読み込み、再生停止の制御を行うMC。 があります。 _rootにMC(1)があり、その中のMC(2)をボタンとして利用していて、 on (rollOver) { this._parent.swapDepths(95); this._parent.gotoAndPlay("n1"); } on (rollOut, releaseOutside) { this._parent.swapDepths(-1); this._parent.gotoAndPlay("n2"); } on (release) { _root.gotoAndPlay("m"); } とMC(2)に直接打ち込んでいます。 "m"が_rootの3フレームから10フレームまでで、 on (release)されるとMC(2)自体が小さくなるように モーショントゥーンで作っています。 そこで質問なのですが、 読み込んだswfの上に別レイヤーでWindowの枠があり、 MC(2)がon (release)時にswfの映像が消えて、 枠が大きくなる様にしたいのですが動いてくれません。 しかも swfも消えなく、小さくなったMC(1)を再度クリックすると 音が再度読み込まれ2重になって流れます。。。 この時微妙に枠が大きくなったり、アルファをかけてあるMC等の色が 濃くなったりするので、全てが2重になっているのかもしれません。 これはバグなのか。。。 長々とスミマセン!! 質問が多くなってしまったので、 _rootのMC(1)の中にあるMC(2)をon (release)した時、_rootにある枠が 大きくなる方法を教えて下さい。 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • すべてのMCを1フレーム目へ

    ステージ上にMCのインスタンスが100個あるとします。 ボタンのクリックで全部のMCを1フレーム目へ移動させたいと思っています。 _root.EVENT_btn.onRelease = function() { _root.A_mc.gotoAndStop(1); _root.B_mc.gotoAndStop(1); _root.C_mc.gotoAndStop(1); _root.D_mc.gotoAndStop(1); : : } とひとつずつ書くしかないのでしょうか? ほかに効率のよい書き方はありますか? (注)すべてのインスタンスの親は同一オブジェクトではありません。

    • ベストアンサー
    • Flash
  • ビットマップデータのメモリ使用量について

    Adobe Flash CS6 AS3を使用しています。 ライブラリにpng連番画像を読み込みそれをムービークリップ内に配置し、そのムービークリップをメインのタイムラインにおくという形でフラッシュを作っているのですが、これではメモリ使用量が大きくなりすぎるのでなんとかしたいと思っています。 例えばmcAというムービークリップの内部にライブラリにインポートしたA01からA10という10枚の連番png画像を10フレーム分並べます。そして同じくムービークリップmcBの内部にライブラリにあるB01からB10という10枚の連番png画像を同じく10フレーム分並べます。その二つのmcをメインのタイムラインに配置します。これでmcAとmcBの10フレーム分のアニメが再生されますが、mcAかmcBどちらか片方だけを表示するようボタン操作ができるようにしています。ここで問題なのですが、例えばmcAを表示しているときにmcBは可視性を切って非表示にしていますが、メモリ使用量が減りません。こういった時に非表示にしているムービークリップのために確保したメモリーを開放する、といったことはできないのでしょうか?removeChildなどを実行してもメモリ使用量はまったく減りませんでした。 連番画像とそれを収めるムービークリップの数が増えれば増えるほどメモリ消費量が増えていってしまうので困っています。表示されていない内部にビットマップデータを配置してあるムービークリップのメモリーを開放するよい解決策がありましたら教えてください。 それと少し話がそれますが、ライブラリにあるビットマップイメージををリンケージしそのビットマップイメージをaddChildでステージに読み、そのビットマップイメージをdisposeで削除した場合にメモリーが開放されるのを確認しましたが、今の自分のやりかたよりこういった別の方法からフラッシュを作っていったほうがメモリー使用量を抑えられたりするのでしょうか?もっと効率の良い方法がありましたらそちらも教えてていただけると助かります。宜しくお願いします。

  • シーン名で参照できないのでしょうか?

    初歩的な質問かもしれないのですが、 シーンにつけた名前(ここではscene)を_rootの代わりに利用したいと思っています。 ・状況 sceneにはMC、mc_aとMC、mc_xを置き、 さらにmc_aの中にMC、mc_bを置いています。 mc_bからmc_xを参照するときに、 現在は、_root.mc_xの代わりに、 _parent._parent.mc_xとしています。 これを、 scene.mc_xとしてみても動作しません。 このようなことはできるのでしょうか? _rootを使えない理由は、 このswfファイルを他のFLASHに 外部読み込ませるからなのです。 お手数をお掛けしますがよろしくお願い致します。 ・環境 FLASH MX Windows2000

  • Fpsを増減させても一定のスピードで再生する方法

    Adobe Flash Pro CS6 でAS3を使っています。 質問はタイトルの通りなんですが例えばルートにフラッシュの再生速度を速くしたり遅くしたりするFps変更スイッチと mcA,mcBと2つのムービークリップがあるとして mcAはFPS変更の影響をうけるようにし、逆にmcBはFps変更の影響をうけないように2つのムービークリップを同時に再生をしたいのです。そのときmcA,mcB両方とも1フレームも欠けることなく再生したいです。 自分で試してみた方法は、mcBの中の全フレームに stop();を記述しルートに function mc_Play():void { mcB.play(); } setInterval(mc_Play,200); と記述して再生スピードを強制的に固定する方法を試したのですが、Fps変更ボタンを押してFps変更を行うときに、setIntervalで制御しきれていないのかもしれませんが、微妙にmcBの再生速度が遅くなったり速くなったりと変化してしまいます。何か他に良い方法はありませんでしょうか?例ではムービークリップの数を少なくしていますが実際のプロジェクトファイルでは、ムービークリップの数は20以上ありそれぞれが10フレーム以上の長さのアニメーションファイルを持っています。その20以上あるムービークリップの数個だけFPS増減の影響をうけないように再生速度を固定したいのです。

  • AS3.0で子MCから他の子MCのフレームへ移動

    Flash professional CS5を使用してAS3.0で記述しています。 メインのタイムラインにフレームラベルが二つ(main1とmain2)あります。 main1にはステージにムービークリップのmc1が,main2にはmc2が配置してあります。 さらに, こういう書き方でいいのかわかりませんが; mc1内にはフレームラベルsub1,sub2があります。 同様に, mc2内にはフレームラベルpart1,part2があります。 sub1ではボタン(btn1)があり,押すとフレームラベルsub2に進むようになっています。(確認済み) sub2にもボタン(btn2)が用意してあり押したらムービークリップmc2内のpart2に移動させたいと考えています。 フレームラベルsub2で btn2.addEventListener(MouseEvent.CLICK, Click2); function Click2(evt:MouseEvent):void{ MovieClip(parent).gotoAndStop("main2"); } と記述すればメインタイムラインのフレームラベルmain2に移動することは確認しました。 しかしフレームラベルpart2へ移動するにどのように記述したらよいかわかりません。 MovieClip(parent).mc2.gotoAndStop("main2"); としてもやはりmc2が未定義なので無理なのでしょうか? もしそうでしたらmain1の段階で定義しようかと思うのですが,その場合はどのように記述すればよいのでしょうか? つまり,メインタイムライン上における後ろのフレームラベルの子のフレームラベルに移動したいです。 説明がうまくできないので図も載せます。 http://www1.axfc.net/uploader/Img/so/99986 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • [IE7]Object要素内から親ウィンドウの独自オブジェクトを参照したい

    以下のようなウェブページを作成しています。 iframe要素の代わりにObject要素を利用しようと思い、ウェブページ内にObject要素を設けて、別なウェブページを読み込んでいます。それぞれ「親」、「子」とします。「親」も「子」それぞれ別々なJavaScriptファイルでオブジェクトを持たせています。 いま、「子」から「親」の持つオブジェクトを利用しようと思っています。今回は仮に「obj」とします。objは「親」の中でグローバルにスコープされています。 iframeの時と同じように「window.parent.obj」で「親」の持つオブジェクトにアクセスしてみました。FirefoxやOperaではアクセスが成功し、「親」の持つオブジェクトにアクセスできました。やったね(^-^) しかしInternet Explorer7のデバッグ・コンソールには「"window.parent.obj"はNullまたはオブジェクトではありません」のエラーが出ます。 ループを使ってオブジェクト「window.parent」の内容を出力してみましたが、再帰的に3回繰り返しても「obj」は含んでいませんでした。 Internet Explorer7でも「親」のオブジェクトにアクセスする方法をご存知の方、ご教授願います。不可能な場合は不可能な旨、お伝えください。

  • MovieClip上のComboBoxを透過させる方法

    現在FlashCS3でActionScript3.0でコンテンツを作製しています。 通常、MovieClipA(以下MC_A)の子としてMovieClipB(以下MC_B)を配置し、親オブジェクトであるMC_Aのalpah値0にすると、その子であるMC_Bも透過率は0になり、全く見えない状態になります。 しかし、MC_Aの子としてUserInterfaceコンポーネントであるComboBoxを配置して上記と同様、MC_Aのalpha値を0にしても、外観(通常状態のスキン)は透明になりますが、Labelの文字は透明になりません。 また、MC_Aのalpha値を0にした状態(外観上はLabelの文字のみ見える状態)で、ComboBoxをクリックすると、選択状態のスキンやドロップダウンスキンはalpha値の影響を受けずにLabelの文字と同様に見える状態になってしまいます。 まとめますと、表示リスト上に配置されたComboBoxに対して、その親オブジェクトのalpha値を0にした際に、その子であるComboBoxの全てのスキンへ対してもalpha値を適用する為にはどのようにすればよろしいのかをお伺いします。 関連するようなサイトや書籍も調べてみましたが、上記のような現象については言及されておらず、困っております。 ヒントとなる情報や解決法などがございましたらご教授頂ければ幸いです。 最後に、上記の説明中の用語や用例などに誤りなどがございましたらご容赦ください。

    • ベストアンサー
    • Flash
このQ&Aのポイント
  • Windows10バージョン22H2の更新プログラムがインストールできず、エラーコード0x80244022が表示される状況について質問があります。対処方法を教えてください。
  • ノートパソコンNEC LAVIE NS750を使用しており、Windows10バージョン22H2の更新プログラムのインストールができません。エラーコード0x80244022が表示されます。解決策を教えてください。
  • Windows10の最新バージョンである22H2の更新プログラムがインストールできず、エラーコード0x80244022が出ています。NEC LAVIE NS750を使用しており、有線LANで接続しています。どうすれば解決できるでしょうか?
回答を見る