flashでムービークリップの可視、不可視を制御する方法を教えてください

このQ&Aのポイント
  • Flash、アクションスクリプト共に初心者の為、見当違いな記述をしているかと思いますが解決策が分からず困っておりますので助けていただけましたら幸いです。
  • インスタンス名に変数を代入して、希望するムービークリップの可視、不可視を制御したいと思っていますが、いくつかの試行でエラーが発生しています。
  • 条件によって変わる変数に基づいて、btn_[Pagecount].visible = true; のような記述をしたいですが、正しい方法が分かりません。
回答を見る
  • ベストアンサー

インスタンス名に変数を代入 (Flash)

複数個あるインスタンスをその都度変数を参照して希望する一つのムービークリップの可視、不可視を制御したいと思っています。 var Pagecount:Number = 0; 1フレーム目に↑を記述して変数を定義し、その変数の状態によってある希望するムービークリップの可視、不可視を制御したく、該当箇所に以下のようにASを記述しました。 (変数には条件によって1~50が代入されています。) btn_[Pagecount].visible = true; 上記の文ではエラーとなってしまいムービークリップを制御出来ませんでしたので どなたか正しい記述の仕方を教えていただけないでしょうか。 Flash、アクションスクリプト共に初心者の為、見当違いな記述をしているかと思いますが 解決策が分からず困っておりますので助けていただけましたら幸いです。 何卒、宜しくお願い致します。 ※AS3、Flash CS5、Mac環境となります。

  • Flash
  • 回答数1
  • ありがとう数2

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

「どの階層にどういったインスタンスがあってスクリプトはどこに書いたものなのか」 という状況説明が全くないため,よくわかりませんが, ステージ上に「btn_0」というインスタンス名(または変数名)を付けたボタンインスタンスがあって その「btn_0」がある階層のフレームにスクリプトを書く場合でしたら, 次のようにすればできませんか? var Pagecount:Number = 0; this["btn_" + Pagecount].visible = true; Google検索「配列アクセス演算子」 http://www.google.co.jp/search?sourceid=navclient&hl=ja&q=%e9%85%8d%e5%88%97%e3%82%a2%e3%82%af%e3%82%bb%e3%82%b9%e6%bc%94%e7%ae%97%e5%ad%90

ookkwwaavvee
質問者

お礼

自分の曖昧な質問にも関わらず的確な回答を有り難うございました。 教えていただきました記述で問題無く動作致しました。 本当に助かりました。 心からお礼申し上げます。 有り難うございました。

関連するQ&A

  • ムービークリップのインスタンス名を変数で扱う

    Flash初心者で、レベルの低い質問だとは思いますが申し訳ありません。単純なシンタックスに関する質問です。 Panel.Panel0Cont ~ Panel.Panel10Cont という11個のムービークリップがあります。 それぞれのムービークリップを一挙に指定のフレームへgotoAndPlayさせる際に、ムービークリップの名前を変数で代入してforループで回したいのですが、変数への代入の仕方が解りません。例えば、 for (i=0; i>10; i++) { var mc:MovieClip = "Panel.Panel"+i+"Cont"; mc.gotoAndPlay(JumpNum); } mcはムービークリップですから、単純な文字列を代入しても当然タイプエラーになってしまいます。ムービークリップのインスタンス名のプロパティに、文字列を変数を使って代入するやり方があるのだと思います。 そのやり方をご教示頂けませんか。 ※参考書を2冊ひっくりかえしてもにわかには見つかりませんでした。

    • ベストアンサー
    • Flash
  • インスタンス名の指定に変数を使いたい

    ある一つのボタンオブジェクトで、マウスイベントによって別のムービーをコントロールしたいのですが、 同じボタンでも時々の状況によってコントロールする対象となるムービーが違うのです。 そこで、状況1では変数Aにムービー1のインスタンス名を、状況2では同じ変数Aにムービー2のインスタンス名を代入し、ボタンオブジェクトのスクリプトの中で変数Aの値をコントロール対象となるムービーのインスタンス名として使って、結果的に状況次第で操作対象を変える、ということは出来ないのでしょうか? traceアクションで見ていると変数の値は正しく変化しているのですが、ムービーのコントロールはまったくできず、困っております。 ボタンには、変数Aがnameだとすると、 on (rollOver) {   trace(name);   _root.name.gotoAndStop(2); という記述をしております。 解決策をご存知の方、どうかご回答よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • インスタンス名の代入

    お世話になります。Action Script初心者です。 あるボタンをクリックすると、別のムービークリップのインスタンス名が 指定した名前になるようにしたいのですが、 どのようにしたらいいのか分かりません。 作業環境はFlash CS3 A.S.2.0 です。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • AS3:ルートの変数とムービークリップ内の変数について

    AS3:ルートの変数とムービークリップ内の変数について ルートのタイムラインで設定した変数var RootVarがあるとして、これをあるムービークリップMCからMovieClip(root).RootVarで読み取って、MC内で何か処理をしたときMovieClip(root).RootVar++;とやってもルートのRootVarの値は変わりません。 例えば、 ■ルートのタイムライン1フレームに記述 var RootVar:uint; if(RootVar>=3){ trace("できた!!"); } ■ステージにあるムービークリップMCのタイムライン1フレームに記述 MovieClip(root).RootVar=0; var AddTimer:Timer = new Timer(1000,3); AddTimer.addEventListener(TimerEvent.TIMER,AddNum); AddTimer.start(); function AddNum(eventObject:TimerEvent):void { MovieClip(root).RootVar++; } ルートからムービークリップ、ムービークリップからルートへ変数に値を渡したり受け取ったりはできなのでしょうか? 変数の扱い方が問題なのでしょうか?よろしくお願いします。 環境:AS3、Flash CS4

    • ベストアンサー
    • Flash
  • FLASHで変数に代入した数値の桁が変わる時の数字の位置を変更したい。

    FLASHで変数に代入した数値の桁が変わる時の数字の位置を変更したい。 FLASHを勉強しています。 変数n =0; の後に別のフレームで 変数n に n++ で1ずつ代入し続けるとします。 変数n が 0→1→2→ ・・ →9→10 この、9→10に変わったときに10の位の桁が左に来て欲しいです。 デフォルトでは9→10にかわったとき、10の位の桁が右側に来てしまいます。 例:デフォルト  9  ↓  10 以下のようになって欲しいです。  9  ↓ 10 今まではやり方が分からなくて、変数nをムービークリップにしてしまって、 そのムービークリップのx座標を変えるという方法をとっていました。 お詳しい方いらっしゃいましたら、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • thisをインスタンス名に変えたらムービーが動かない

    Flash8です。タイムライン上に、 ボタン(インスタンス名 b1_btn) と ムービークリップ(インスタンス名 test_mc) を配置しました。 次に、このボタンインスタンスに以下のイベントハンドラを記述しました。 ----------------- on (press) { this.stop(); } ----------------- 実行すると、ボタンを押せばムービーが停止します。 で次に、上記の記述を以下のように変えます。 ----------------- on (press) { test_mc.stop(); } ----------------- 実行すると、ボタンを押してもムービーが停止しません。 なにがイケないのでしょうか?

  • actionscript 2.0 配列型変数をグローバル変数として扱いたい。

    action script2.0で ある変数を、共有しようと、ムービークリップに _global.hoge = _name(ムービーのインスタンス名); というような記述をしました。 すると、たしかにほかのどのムービークリップでも hogeという値は取り出すことができました。 ところが、インスタンスはひとつではなく複数あるため、 _global.hoge = _nameが記述されているムービークリップがいくつもあると、 次々上書きされ、結局hogeは、最後に読み込んだ _nameの値が入ってしまうという現象が起きたのです。 そこで _global.hoge[_name] = _name; というような、変数名がかぶらぬよう配列に変更してみました。 ところが、また問題が発生しました。 なぜか、配列だと頭に_globalとついていても グローバル変数として扱ってくれず、 ほかの場所で hoge[1] 等と記述しても全く値が取り出せないのです。 また、同ムービークリップ内ではちゃんと取り出せました。 どうすれば、配列変数をグローバル変数として 扱うことができるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Flash
  • Flash 変数宣言

    これまた超基本的な事ですが、 Flash(AS3)で変数宣言をする際の記述方法について質問させてください。 現在自分がやっている方法では、変数宣言する際 --------------------------------------------------------- var hensu:String = "あいうえお"; --------------------------------------------------------- としていて、これを例えばrootから ムービークリップ「mc」内に変数「hensu」を作る場合 --------------------------------------------------------- mc.hensu = "あいうえお"; --------------------------------------------------------- としています。これで特に問題ないのですが、 値を何も入れず、とりあえず変数だけ用意しておく場合、 rootに変数を作る時は --------------------------------------------------------- var hensu:String = new String(); --------------------------------------------------------- としています。また、 --------------------------------------------------------- var hensu:String; --------------------------------------------------------- だけでも、変数が作成されているよう?なのですが・・・ trace()で調べると new String()の場合は値が"空白"(何も表示されない) hensu:String;の場合は"null"になります。 という事はどちらの場合でも単純に変数だけ作るのであれば これで機能していると考えてもよいのでしょうか? この"空白"と"null"の違いを理解したいです。 また、rootからムービークリップ「mc」内に変数「hensu」を作る場合として、 --------------------------------------------------------- mc.hensu = new String(); --------------------------------------------------------- とすれば、大丈夫ですが --------------------------------------------------------- mc.hensu:String = new String(); --------------------------------------------------------- や --------------------------------------------------------- mc.hensu:String; --------------------------------------------------------- ではエラーが出ます。 root上に変数を作る時の --------------------------------------------------------- var hensu:String = new String(); --------------------------------------------------------- や、別の場所に変数を作る場合でも --------------------------------------------------------- mc.hensu = new String(); --------------------------------------------------------- では問題ないのに、 ●●●.変数:型 = new 型(); の形にするとエラーが出るのはなぜなのでしょうか? (記述方法が間違っているといわれればそれまでですが・・・)

  • Flash MCのモーショントウィーン

    Flash CS5 ActionScript 3.0にて制作しています。 ムービークリップに動きをつけて色を変更するスクリプトを書いています。 ・ボタン1を押すとムービークリップの色が変わる ・ボタン2を押すと10フレーム目に飛んでモーショントウィーン それぞれ機能は正常に動くのですが、ボタン1を押した後にボタン2を押すとモーショントウィーンが動きません。 ボタン2を押した後にボタン1を押す場合は動きます。 ムービークリップのインスタンス名はtest として下記のようなスクリプトを書いています。 どなたか、お力をお貸し下さい。 よろしくお願い致します。 btn.addEventListener(MouseEvent.CLICK, black); black(event:MouseEvent):void { var color = new flash.geom.ColorTransform(0, 0, 0, 1); test.transform.colorTransform = color; } btn2.addEventListener(MouseEvent.CLICK, btn2); function btn2(event:MouseEvent):void{ gotoAndPlay("10"); }

    • ベストアンサー
    • Flash
  • ActionScript2.0でインスタンス名を変数に格納することが可

    ActionScript2.0でインスタンス名を変数に格納することが可能なのかが、よくわかりません。 RPGゲームを作っているのですが、4種類のアバターから自分が冒険に使いたいアバターを選択し、そのアバターでその後の冒険をすすめていく ということをしようと考えています。 こうなると、 if(1のアバターが選択(クリック)されたら){ 変数aにアバター1_mcを代入する }else if(2のアバターが選択(クリック)されたら){ 変数aにアバター2_mcを代入する } という処理にし、後で aを表示 という呼び出し方になるのかなと思い、何度も試してみたのですが、ぜんぜん思うようにいきません。記述の仕方もわからない状態です・・・単なるAS2の勉強不足なのですが、何かこの方法でも他の方法でもいいやり方があったら教えていただきたいのですが・・・;_; よろしくお願い致します!

専門家に質問してみよう