• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:関数にカウント変数を随時代入したいのですが・・)

関数にカウント変数を随時代入したいのですが・・

このQ&Aのポイント
  • インスタンス名「typ1」から「typ17」までの連番のムービークリップのボタンがステージに配置されている状態で、カウント変数を代入する関数を作成したいです。
  • 現在のコードでは、ボタンを押した際にカウント変数が正しく代入されず、一律「18」が代入されています。
  • ボタンの数が多いため、スクリプトを使用してカウント変数を正しく代入する方法を教えてください。

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

  • ベストアンサー
  • LACOMS
  • ベストアンサー率65% (15/23)
回答No.1

このプログラムですとiの値は、タイムライン変数として扱われるため forループが終了した時点の値(この場合18)が関数内でも使われる ことになります。このiの値をそれぞれのムービークリップインスタン スのタイムライン変数として格納してやれば、独立した変数として 扱えるようになります。 以下のように変更したらいかがでしょうか? for (i=1; i<18; i++) { this["tpy"+i].Para = i; this["tpy"+i].onRelease = function() { trace(this.Para); xChangeSelType (this.Para); }; }

is_may
質問者

お礼

できました! ムービークリップに変数を作成してやればよかったんですね。 ありがとうございました。

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

関連するQ&A

  • アクションスクリプト2.0でfor文の出力結果

    for (i = 1; i < 53; i++) { this["pad"+i].onRelease = function() { trace("pad"+i); }; } pad1~pad52というインスタンス名のムービークリップを配置します。 ムービークリップを押したときに各番号をtraceしたいのですが、 すべて"pad53"という同じ結果(出力)になってしまいます。 よくよく考えてみるとそうなってしまうな・・・ というのはわかるのですが、どこをどのように変更すれば よいのか思いつきません。。。 根本的に考え方が違うのでしょうか。 よろしくお願いいたします。

  • インスタンス名の代入

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

    • ベストアンサー
    • Flash
  • 【action script】複数のMCを・・・

    環境:Flash8 actionscript2.0 10こ程度のムービークリップをそれぞれクリックした時に同じ動きをさせる文を1つにまとめることは可能でしょうか? ムービークリップそれぞれに mc1 mc2 mc3 …mc10 とインスタンス名をつけています。 さらにその下位層に mc1  └kai_mc mc2 └kai_mc ・ ・ ・ mc10 └kai_mc と置いています。 このそれぞれのムービークリップをクリックした際、その下位層のムービークリップを次のフレームに移動させたいと考えています。 それぞれ個別に書くと _root.mc1.onRelease=function(){ _root.mc1.kai_mc.nextFrame() } と書いていたのですが、ムービークリップの数を増やすかも知れずムービークリップの数分書くのは大変なので1つにまとめたいと考えています。 自分で以下のように書いてみました。 i=0 for(i=1; i>10; i++){ _root["mc"+i].onRelease.function(){ _root["mc"+i].kai_mc.nextFrame() } } うまくいかないので試行錯誤したりtraceで調べたりしたのですがどうもよくわかりません。 i=0 for(i=1; i>10; i++){ _root["mc"+i].onRelease.function(){ trace(i) } } で出力すると 11と表示されるのでpassが違うとは思うのですが・・・ iを1~10で指定しているのになぜ11となるのでしょうか? どうすればpass指定できるのでしょうか? そもそものやり方、考え方が違うかどうかも含め、教えて頂きたく質問しました。 よろしくお願いします。

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

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

    • ベストアンサー
    • Flash
  • 条件式の中に入れるとムービークリップが動作しない。

    条件式の中に入れるとムービークリップが動作しない。 またまた、悩みにはまってしまいました。 初期状態で、ボタンのムービークリップを全て、ラベルreadyの静止画像に設定し、 クリックされたときに、そのボタンのラベルhitに移動して、 そこに設定されたムービークリップの動作をさせようとしています。 以下のようなアクションスプリクトを書きましたが、 hitに移動するものの、hitに設定したムービークリップの、 1フレーム目の静止画像しか表示されません。 試しに6行目の_root[buttonName].gotoAndStop("ready"); のreadyをhitに変えると、hitラベルのムービークリップが動作します。 原因は何なのでしょうか??? ////////////////////////////////////////////////////////// var onMapButton_num = 0; onEnterFrame = function () { var buttonName = "onMapButton" + onMapButton_num + "_mc"; for ( var i:Number = 1; i < 6; i++) { // 初期設定 buttonName = "onMapButton" + i + "_mc"; _root[buttonName].gotoAndStop("ready"); //ボタンをすべて ready に } for ( var i:Number = 1; i < 6; i++) { // アクション if ( onMapButton_num== i ) { // ボタンが押された場合 buttonName = "onMapButton" + i + "_mc"; _root[buttonName].gotoAndStop("hit");     // ヒットしたボタンを hit に } } }; // ボタン(1~5)のアクションと 番号の取得 ////////////////////////////////// onMapButton1_mc.onRelease = function() { onMapButton_num = 1; }; onMapButton2_mc.onRelease = function() { onMapButton_num = 2; }; onMapButton3_mc.onRelease = function() { onMapButton_num = 3; }; onMapButton4_mc.onRelease = function() { onMapButton_num = 4; }; onMapButton5_mc.onRelease = function() { onMapButton_num = 5; }; stop();

  • AS3.0でボタン処理をまとめて書くには?

    はじめまして。当方、最近プログラム的なものを始めたばかりで困っています。 例えばルートにbtn0,btn1,btn2という3つのムービークリップを置いたとして、 ボタンを押したらそれぞれのムービークリップ名をトレースするには、 AS2.0以前ではルートのフレームアクションで for (var i=0;i<3;i++){  _root.["btn" + i].onRelease = function{   trace(this._name);  } } といった感じでforループでまとめられると思うのですが、 3.0ではどうしたらよいのか見当もつかず困っています。 for (var i=0; i<3; i++) {  ["btn"+i]addEventListener(MouseEvent.CLICK,over); } このようにまとめてリスナーに登録したとしても、 リスナー関数が別になってしまうので、this.nameは使えず…はて。といったところです。 なにとぞご教示よろしくお願い申し上げます。

    • ベストアンサー
    • Flash
  • 変数使い方?(> <)

    アクションスクリプト初心者です。 変数iに0を代入して、ムービークリップをクリックされるたびに1ずつ増やしていき、1回目にクリックしたときと2回目にクリックしたときに異なる処理を行いたいと思っております。 一回目の処理はうまくいくのですが、2回目の処理はうまくいかず、1回目と同じ処理になります。 対処法を教えてください!お願いしますM(_ _)M onClipEvent (enterFrame){ i=0; } on(release){ i++; if(i==1){ getURL("http://www.yahoo.co.jp") } if(i==2){ getURL("http://www.google.co.jp") } }

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

    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
  • インスタンス名に変数を代入 (Flash)

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

    • ベストアンサー
    • Flash
  • 外部swfファイルのscriptが動作しない・・・

    Flash8 ActionScript2.0を使用しています。 呼び出し用のswfファイルの_rootにムービークリップyomikomi_mcを配置していて mcLoader.loadClip("test.swf", yomikomi_mc); をを使ってtest.swfを読み込みました。 すると読み込んだtest.swfに書かれているスクリプトがうまく作動しません。 すべて動かないというわけではなく… ムービークリップにonReleaseのアクションが動作しなかったりです。 ボタンインスタンスのonReleaseはちゃんと動作しているようです。 これは何が原因なのでしょうか? mcListener.onLoadStart mcListener.onLoadInit などを使って正しく読み込まれているかチェックしたのですが読み込みは恐らく完了しているように思うのですが… (初めての試みなので自信はないのですが…) test.swfのみを開いた時にはうまく動作するので読み込んだ事が原因で起こっているエラーだと思うのですが…。 読み込み用のswfファイルはそのままではいけないとか読み込み専用の書き方があるとかいったことはあるのでしょうか? 原因がつかめず困っています。 よろしくお願いします。

    • ベストアンサー
    • Flash