• ベストアンサー

ボタンをクリック→値を代入→一定の値を超えたら次のフレームへ

 お世話になります。 ボタンのアクションで、仮に変数を"a"とおいて、a==0から始まりボタンをクリックするごとにa = a+1をしていき、最終的にifで、a==10なら次のフレームへ進む。 と言うようなものを作りたいんですが、基本的なこと過ぎるのか調べてもやり方が載っていません。 どなたか御教えください。

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

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

Flash の ActionScript では、”変数 a を使う”といった宣言をしておかなくても  a = 1; とするだけで変数 a を利用できます。  a = a + 1; と、いきなり計算に利用しても文法上は間違いではなく、エラーにもなりません。 ですが、この場合は a の値が不明です。 この計算の結果はどうなると思いますか? ActionScript では、存在しない変数を参照しようとすると undefined (未定義)という値が返されます。 undefined とは内部では 0 のことで、Flash Player 6 (作成ツールは Flash MX )までは、未定義の変数の初期値は 0 として処理されていました。従って上記の例は、Flash Player 6 向けにパブリッシュされた作品であれば、a の値は 0 + 1 = 1 で 1 になります。 ところが、Flash Player 7 (作成ツールは Flash MX 2004 )からは undefined の解釈が変わり、未定義の変数が 0 とは見なされなくなりました。上記のスクリプトを Flash Player 7 向けにパブリッシュした時は、存在しないものに数値を加算することはできないとの意味で、NaN (数値ではないもの)という値になります。 つまり、Flash Player 7 向けのムービーでは、変数を数値や演算に利用する時は先に初期値を入れて、計算に使う前に変数を存在させておく必要があります。 どのプログラミング言語を使ってプログラムを組む時でもそうですが、初期値が不明の変数を信用するのは危険です。 Flash Player 6 までなら、未定義の変数の初期値は確かに 0 と見なされますけれど、たとえ初期値が 0 の変数を使う場合でも、初期値を明示的に入れてから利用する習慣をつけるといいですね。 それで、今回の件ですが。 例えば、フレーム1にボタンがあり、ボタンをクリックする度に a の値を1ずつ増やして、これが 10 になった時にフレーム2に移動する、という場合を考えますと。 今回は変数 a でカウントを取りますから、まずは a に 0 を入れます。 初期化のタイミングは場合にもよりますが、基本的には1回だけでいいので、”スクリプトが1回しか実行されないもの”を利用します。 初期化に使えそうなものは、  ・タイムラインを利用して、フレームアクションを使う  ・ムービークリップの load イベントを利用する などです。 フレームに設定したスクリプトは、再生ヘッドがフレームに来た、その時1度しか実行されません。 今回はムービークリップがありませんから、フレームアクションを使って初期化します。 まず、フレーム1に (↓各行頭に全角のスペースが入っています。コピーする際は、全て半角のスペースかタブに置き換えてください)  a = 0;  stop(); というスクリプトを書きます。 stop(); でタイムラインが止まっており、フレーム1がずっと表示されてはいますが、a = 0; は1度しか実行されません。 フレーム1にボタンを置いて、クリックされる度に a の値を増やします。 a の値が 10 になったらフレーム2に進むスクリプトは、次のようになります。 このスクリプトはボタンに設定してください。  on(release)  {   //aの値を+1する   a++;   //10になったら次のフレームへ移動   if( a == 10 )   {    gotoAndStop( 2 );   }  } 単純に a を +1 する書き方は正式には a = a + 1; ですが、a++;(インクリメント演算子)という簡略化した書き方もできます。 ちなみに、a = a - 1; の略式として a--; (デクリメント演算子)というのもあります。 どちらも、for 文や何かのカウントを取る場合などによく見かける演算子です。 ボタンの on アクションの中に  trace( a ); というスクリプトを入れておくと、「ムービープレビュー」ではボタンをクリックする度に「出力」パネルが開いて、変数 a の内容が表示されます。 上手くいかなかった場合は、a の中身が undefined や NaN になっていないかどうかを確認してみてください。

7772
質問者

お礼

とてもわかりやすいお答えありがとうございました。 大変参考になりました。

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

関連するQ&A

  • ボタンのクリックカウントでフレームを移動させたいのですが

    過去ログも調べましたが解決しないので質問させていただきました;; どうかよろしくお願いします。 テキスト入力にユーザーに書き込んでもらった整数を変数namとして ボタンのクリックしたカウントがnamの数になった時でフレームを移動させたいのですがボタンにどのようなアクションを埋め込めばよろしいでしょうか? また現在のクリック数を表示するにはどうすればよろしいのでしょうか? ご回答お願いします。

    • ベストアンサー
    • Flash
  • Flashでボタンが全て押されたら次のフレームに飛びたいです。

    flashで、隠れている動物を探すゲームを作っています。 動物が隠れている場所はボタンになっていて、クリックすると動物が 姿を現すようになっているのですが、 全てのボタンが押されたら次のフレームに飛んでクリア画面を出したいのです。 if(ボタンを全部押したら) { 次のフレームへ移動 } 上のようなスクリプトも書いてみましたが駄目でした。(私の書き方が間違えているだけなのかもしれませんが・・・) ボタンは全部で10個あり、それぞれbtn_1、btn_2..というような名前を付けています。 回答よろしくおねがいします。

    • ベストアンサー
    • Flash
  • 複数のフレームに同じボタンを表示させたい!

    全部で15フレームのflashムービーを以前作りました。 今日、1フレーム目にボタンとアクションを追加したのですが、 2フレーム目以降に行くとボタンが表示されません。 1フレーム目のボタンとアクションを、コピーして2フレーム目に貼付け、 3フレーム目に貼付け、、とすると大変な労力になるので、 簡単に15フレーム全部に同じボタンをずっと表示させる方法は ありませんか? 超初心者で申し訳ありません。 よろしくお願いします。

  • FLASHのフレーム上にある変数をボタンを押した時に、切り替えたい。

    FLASHのフレーム上にある変数をボタンを押した時に、切り替えたい。 フレーム上にある変数にセットされている数字を、 ボタンを押したタイミングで、新しい数字を代入して、再計算したいです。 ◎現在フレームに下記のように記載しています。 ============================ p_pr1 = 3; p_pr2 = 10; t_price = p_pr1 + p_pr2; ============================ 最初の段階では、t_priceには、13が表示されます。 ◎ボタンアクションには、 ============================ on (press) { p_pr1 = 1; } ============================ これで、p_pr1には、1が代入されているんですが、合計は13のままです。 合計を11にするには、どうすればいいでしょうか? 宜しくお願いします。

    • ベストアンサー
    • Flash
  • FLASHでボタンごとに違うフレームに移動する場合

    こんにちわ。 FLASHにて4つのそれぞれのボタンを作成し、そのボタンをクリックするとそれぞれ違うフレームに移動するにはどうすればいいのでしょうか? 例 Aボタン→フレーム10 Bボタン→フレーム20 Cボタン→フレーム30 Dボタン→フレーム40

    • ベストアンサー
    • Flash
  • JSP(ラジオボタンでチェックされた値を代入)

    JSPのHTML箇所で以下のようなラジオボタンを作成しました。 <input type="radio" name="a" value="1" checked> <input type="radio" name="b" value="2"> 上のラジオボタンが選択されたとき、<% %>のJAVAで変数cに1をセット、 下のラジオボタンが選択されたとき、変数cに2をセットという形を作りたいのですが、 調べてもわかりませんでしたのでご教示ください。 以下のようにするとどちらもソースを通るので、必ず2が代入されてしまいます。 IF文的にどちらかチェックされたほうを代入できるようにしたいです。 <input type="radio" name="a" value="1" checked <% c=1 %>> <input type="radio" name="b" value="2" <% c=2 %>>

    • ベストアンサー
    • Java
  • ボタンクリックで別フレームに文字表示する方法

    Javascriptでチェックボックスにチェックを入れた時、 別フレームのテキストエリアに文字を記入するよう以下のif分を使っています。 if(document.○○.○○.checked == true) { objTextarea.value += ○○ } これをチェックボックスではなくてbuttonをクリックする事で、 テキストエリアに文字を記入するように変更したいのですが、 checked == trueの部分を書き換えれば出来るのかと思い、 いろいろ試してみましたが上手く出来ません。 また、「A」と「B」のボタンがあるとすると、 「A」を押して文字を表示した後、「B」を押すと 「A」の文字がテキストエリアから消えるようにしたいのですが、 どのように記載すればいいか教えていただけませんでしょうか?

  • FLASH 次のフレームにいくと真っ黒に・・

    FLASHはまだあまり使いこなせておりません・・。 写真を加工したものをFLASHで公開します。 FLASHで、写真をクリックすると、次の写真へアニメーションをつけながら移動させようと思っております。 詳細を説明しますと、背景を黒にし、その上に写真を貼り付けております。 透明ボタンを設置しそこに「nextframe」を指定し、次の写真の表示は、カラーを「アルファ」で少しずつ表示させるようにしております。 (フレームには「stop」を、写真の部分に「nextframe」を入れております) 途中までうまくいったのですが、 2~3枚目の写真までいった時に、背景の黒だけが表示され、写真のアニメーションも表示されず・・・・・。 うまくいってる方のものと、見比べました。 ですが、ちゃんとアクションもあってると思いますし、どこが間違ってるのが、??です・・・。 いろいろ考えたり調べたりしたのですが、どうしてもわからず・・・。 下手な説明で申し訳ございませんが、教えて下さい! お願い致します!

    • ベストアンサー
    • Flash
  • ボタンで別swfの任意のフレームに移動したい

    いつもお世話になっています。 WinXPでFlash MX2004を使用しています。 ボタンクリックで別swfの任意のフレーム(ラベル)に移動したいと考えているのですが、可能でしょうか? 具体的にいうと、 01.swf上にボタンA/B/Cを設置。 リンク先の02.swfにフレームラベル「A」「B」「C」があって、01.swfのボタンをクリックすると、02.swfのそれぞれのフレームに移動。 ずいぶん以前にそういった内容の記事をWeb上で見たように思ったのですが、「Flash」「ラベル」「任意」などの単語で検索しても見つけられません。 お心当たりの方がいらしたらどうかご指導ください。

    • ベストアンサー
    • Flash
  • FLASHのボタンから次のムービーへいく方法・・・

    今、FLASHに初めて挑戦しているのですが・・・ ボタンを押すと次のムービーに飛ぶ(シーン、フレームなんでもOK)には、何をどうしたらよいのですか? アクションだのなんだの、ヘルプを見てもちんぷんかんぷんです・・・(泣) もし、よかったらホームページとかに飛ぶ方法とか、ボタンのあれこれを教えていただけると幸いです。 どなたか、申し訳ありませんが教えてください。

このQ&Aのポイント
  • 白黒写真を含む古い写真をアルバムから剥がしてix100でスキャンしたところ、スキャン自体は正常に行われましたが、排出された写真の表面にフィードローラーの跡(線)が付いてしまいました。
  • ローラーの跡が付かないようにするにはどうすれば良いでしょうか。ix100以外の機種なら解決できるでしょうか。
  • 大切な写真のため非常に困っています。
回答を見る