JavaScriptで変数の戻り値を作る方法

このQ&Aのポイント
  • JavaScriptで変数の戻り値を作る方法について説明します。
  • ボタンをクリックすると値が増減する処理を作成しましたが、うまく動作しません。
  • 条件分岐を使って制御しようとしましたが、最初の値に戻ってしまいます。
回答を見る
  • ベストアンサー

変数の戻り値を作りたい

戻り値を作ってみてるのですが、うまくいきません。 画像6枚入れたとして、ボタンに on (release) { cnt = cnt-2; } を作りましたが、1枚目のマイナスの値がないため、バグります。 ※多分小数点になりSTOP そこで、ボタンを足し算で合計にしてみたら、totalを超えると0に戻される為、1枚目にしか戻りません。 ifで制御しようと、ひとまず if (cnt>total-1) { cnt=total-1; } を追加したら、最初から常に6枚目が表示されてしまいます。 なぜ cnt>total-1 の方が勝ってしまうのでしょうか? ======================================================== cnt = -1; _root.total = this.childNodes[0].childNodes.length; if (cnt<total-1) { cnt++; } else { cnt = 0; } ========================================================

  • egtomo
  • お礼率59% (101/170)
  • Flash
  • 回答数1
  • ありがとう数2

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

  • ベストアンサー
  • BellBell
  • ベストアンサー率54% (327/598)
回答No.1

_root.total = this.childNodes[0].childNodes.length; で、_root.totalに対して値を放り込んでいるのに、確認に使用する際には if (cnt<total-1) { と、totalを使用しているため別の変数扱い。 初期化されていない変数なので、totalは0扱いってとこですかね(推測)。 どこに書かれているか、等にもよりますが 毎回cnt = -1;と初期化している? なんとなく、あちこちに似たような別の処理が分散されて書かれていて、バグの元になっていそうな予感です。

egtomo
質問者

お礼

回答ありがとうございます。 確かに、値がバラバラですよね。 cntが-1からのスタートなので6枚の場合、4になると思うんですが、実際は5のようです。 cnt=0が初期値のようなので、 if (cnt>=0) { cnt = total-1; } にしてみると、やはりこちらが優先されてしまいます。 backbtというボタンに対してのifを書くってことはできますか?

egtomo
質問者

補足

ボタンに直接ifで>=だと認知してくれました。 結局簡単な式で終ってしまいましたが、少しだけスキルアップできたと思います。 ありがとうございました。

関連するQ&A

  • このソースで、仕組みについて教えてください。

    現在、スクリプトを勉強しているんですが、XMLから画像URLを呼び込むソースで調べ方が分からない箇所がありますので、どなたか解説して頂けないでしょうか? ●下記はどういった式になるのでしょうか? _root.total = this.childNodes[0].childNodes.length; ※totalの時 = このチルドノード[0]の子ノードを調べる? (自分の解釈です。この[0]はなんなのでしょうか?) ●例えばトータルの最後尾から逆再生させるにはどんな式が必要でしょうか? ※mainasu = cnt-1; (間違ってるとはおもいますが、内容をまだ反映できないので確認ができません) ●初期値 // ストップ stop(); // カウント用変数 cnt の初期値を設定 cnt = -1; // XMLインスタンスの作成 myXML = new XML(); // 余分な空白などを削除 myXML.ignoreWhite = true; // XMLデータロード時の動作定義 myXML.onLoad = function() { // 変数 total にノードのトータル数を取得 _root.total = this.childNodes[0].childNodes.length; // フレーム2でストップ _root.gotoAndStop(2); }; // 外部 XML ファイルのロード myXML.load("my_data.xml"); ●2フレーム // カウント用変数がノード数-1より小さいとき if (cnt<total-1) { // カウントを 1 加算 cnt++; } else { // それ以外は 0 に戻す cnt = 0; } // テキストフィールド 「number_txt」に 番号を表示 _root.number_txt.text = myXML.childNodes[0].childNodes[cnt].firstChild.nodeValue; // MovieClipLoaderクラスのインスタンスを作成 myMCL = new MovieClipLoader(); // ロード監視用のインスタンスを作成 myObj = new Object(); // JPEG ロード完了時 myObj.onLoadInit = function(target_mc) { // load_mc にリンクを設定 target_mc.onRelease = function() { getURL(myXML.childNodes[0].childNodes[cnt].attributes.linkURL, "_blank"); }; // 再生開始 _root.play(); }; // myMCL のリスナーとして myObj を登録 myMCL.addListener(myObj); // JPEG をロード myMCL.loadClip(myXML.childNodes[0].childNodes[cnt].attributes.jpegURL, load_mc);

    • ベストアンサー
    • Flash
  • 料金計算→3桁でカンマを入れたい

    料金計算で合計の数字にカンマを入れたいと思います。何とか本を読み読みここまで来たのですが・・ on (press) { total = _root.pretotal.text; _root.pretotal.text = total.length; //文字数を取得 if (total.length>3) { _root.total.text = (total.substr(0, -3))+","+total.substr(-3); } } ↑これだと「3ケタ目にカンマを追加」だと思うので、12346,789となってしまいます。 どんどんカンマを追加するにはどうしたらういいのでしょうか。。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 変数を利用してif文をまとめたい

    いつも、ありがとうございます。WinXP Flash8です。 初心者クラスの質問ですみません。 下記のボタンにあてたスクリプト、qesの変数を使って1行にまとめ られそうなのですが、できません。 ここであきらめたくないので、ぜひ、教えてください。 on (release) { if (qes == 1) { this.sound_kaisetsu.m1.stop (); } else if (qes == 2) { this.sound_kaisetsu.m2.stop (); } else if (qes == 3) { this.sound_kaisetsu.m3.stop (); } else if (qes == 4) { this.sound_kaisetsu.m4.stop (); } else if (qes == 5) { this.sound_kaisetsu.m5.stop (); } else if (qes == 6) { this.sound_kaisetsu.m6.stop (); } else if (qes == 7) { this.sound_kaisetsu.m7.stop (); } else if (qes == 8) { this.sound_kaisetsu.m8.stop (); } else if (qes == 9) { this.sound_kaisetsu.m9.stop (); } else if (qes == 10) { this.sound_kaisetsu.m10.stop (); } }

    • ベストアンサー
    • Flash
  • カウントダウンタイマーについて

    カウントダウンタイマーで、クリックするとカウントダウンが始まる設定のコードを見つけましたが、 クリックをしないでもカウントダウンするためには、 どのコードを削ったら良いのかわかりませんでした。。 ご教授頂けたら幸いです。 onClipEvent (load) { cnt = 5*1000; _root.cnt_flg = false; } onClipEvent (enterFrame) { if (_root.cnt_flg) { ms = cnt-(getTimer()-_root.my_time); m = Math.floor(ms/60/1000); s = Math.floor(ms/1000)-m*60; if (ms>=0) { this.TM.text = "あと "+m+"分 "+s+"秒"; } else { this.TM.text = "TIMEOVER!"; } } } on (release) { if (!_root.cnt_flg) { _root.cnt_flg = true; _root.my_time = getTimer(); } }

    • ベストアンサー
    • Flash
  • ボタンを押してもすぐ戻ってしまう・・・。

    1フレーム目に、 onEnterFrame = function():Void { if (_totalframes == _framesloaded) { gotoAndStop("snap"); } total = _root.getBytesTotal(); loaded = _root.getBytesLoaded(); percent = Math.floor(loaded/total*100); _root.bar_mc._xscale = percent; }; stop(); と記入し2フレーム目のフレームラベルをsnapに。 2フレーム目には、画像と次のフレームにいくボタンが置いてあります。 ボタンには、 on(press){ gotoAndStop(3); } と書いてあるのですが。 このボタンを押すと、確かに3フレーム目にいくのですが、すぐ2フレーム目に戻ってしまうんです。 初めてローディングバーをつけてみたので、間違いだらけかもしれないですがどうすればいいか教えてください><

    • ベストアンサー
    • Flash
  • 複数のダイナミックテキストに1000桁ごとのカンマの打ち方

    先日、1000桁ごとのカンマの入れ方を教えていただき、上手くいったのですが、複数のテキストボックスにカンマを打ちたいと思い、Array を使ったのですがうまくいきません。根本的に何かが違うのだと思いますが、何処が違うのか教えていただきたく投稿しました。 どうぞよろしく御願いします。 on (press) { 計算式が入っています my_array[1] = new Array( ninendrieki , sannendrieki , gonendrieki , yonendrieki ) my_array[2] = new Array( _root.gonendriekiQ.text , _root.yonendriekiQ.text , _root.ninendriekiQ.text , _root.sannendriekiQ.text ) org = new String( my_array[1] ) temp = new String( "" ); cnt = 0; for( i = org.length - 1 ; i >= 0 ; i-- , cnt++ ) { temp += org.charAt( i ); if( cnt % 3 == 2 ) { temp += ","; } } if( temp.charAt( temp.length - 1 ) == "," ) { start_index = temp.length - 2; } else{ start_index = temp.length - 1; } my_array[2] = ""; for( i = start_index; i >= 0 ; i-- ) { my_array[2] += temp.charAt( i ); } }

    • ベストアンサー
    • Flash
  • 変数が渡らない

    選択するための3つのボタンを作成し、それぞれ変数ansに値を格納しました。下記がそのActionScriptの例です。 ------------------------------- on(release){ ans=1; _root.nextFrame(); } ------------------------------- ボタンを押した後、別のレイヤーのフレームからMCを読み込みます。 しかし、ボタン内で格納した変数が読み込まれずundefined(未定義)となってしまいます。if文で分岐したいのですが出来ずに困っています。 ボタンをクリックすることで変数に格納した値を、ムービークリップのイベント内で読み込むことは可能でしょうか?

    • ベストアンサー
    • Flash
  • Flashでボタンをクリックすると表示・非表示するには?

    お世話になります。 ボタン「buttonC」に以下のスクリプトを記入し、クリックするとターゲット「C」が表示されるようにしています。「C」はタイムライン1では非表示で、タイムライン2以降で表示されるようにしてあり、「buttonC」をクリックすると「C」のタイムラインが2に移動するという仕組みです。 on (release) {  with (C) {   if (_currentframe == 1) {    gotoAndStop(2);   } else {    stop();   }  } } on (release) {  buttonC._alpha = (50); } 更に「buttonC」はクリックするとアルファ=50%になるようにしています。 この状態で、もう一度クリックすると、「C」を非表示(タイムライン1に戻す)にし、「buttonC」のアルファを100%にするように設定したいのです。Flagを使ってみたのですがどうも上手くいきません。 以下は試したスクリプトです。 on (release) {  if (playmode=1) {   with (C) {    if (_currentframe == 1) {     gotoAndStop(2);    } else {     stop();    }   }  } } on (release) {  if (playmode=1) {   buttonC._alpha = (50);   playmode = 2;  } } on (release) {  if (playmode=2) {   buttonC._alpha = (100);   C.gotoAndStop(1);   _root.playmode = 0;  } } 他の方法でも構わないので、良い方法がありましたら教えてください。 よろしくお願いいたします。

  • Loadign途中に再生させる方法

    Flashでアニメーションを作成しているのですが、LoadingのActionScriptについて アドバイスいただけないでしょうか。 まず、現在下記のActionScriptで100%読み込んでから再生する方法を取っています。 -----ActionScript------------------------------- Total = _root.getBytesTotal(); Loaded = _root.getBytesLoaded(); if (loaded>=Total) { _root.play(); } else { parcent = (Loaded/Total)*100; parcent_text = Math.round(parcent); Bar.p_Bar(parcent_text); _root.stop(); } ------------------------------------------------- ところがあまりにもloadingに時間がかかる為、途中まで読み込んだら 再生するようにしたいのですが、その場合どのようにすれば良いのでしょうか。 どうぞ宜しくお願い致します。

    • ベストアンサー
    • Flash
  • カウントダウンタイマー

    Flashで作成したカウントダウンタイマーの設定時間をJavaScriptで変更することは可能でしょうか? 例) 11秒のカウントダウンをJavaScriptで50秒に変更等。 また、変更する場合、下記コードのどの部分を変更したら良いか ご教授頂けたら幸いです。 onClipEvent (load) { cnt = 11*1000; _root.cnt_flg = false; if (!_root.cnt_flg) { _root.cnt_flg = true; _root.my_time = getTimer(); } } onClipEvent (enterFrame) { if (_root.cnt_flg) { ms = cnt-(getTimer()-_root.my_time); m = Math.floor(ms/60/1000); s = Math.floor(ms/1000)-m*60; if (ms>=0) { this.TM.text = m; this.TS.text = s; } else { _root.gotoAndPlay("timeover"); } } }