- ベストアンサー
10回クリックでスコアに10点加えたいのですが...
- ムービークリップシンボルの中にあるボタンを10回クリックすると、シーン1のscoreと名付けたダイナミックテキストに10点加えるためのスクリプトについて質問です。
- スクリプトにはcount変数を使用し、10回目のクリック時にscore変数に10点加えるように設定していますが、何か間違っているようです。
- ただし、_root表記は使用できないため、他の方法で解決する必要があります。ご教示いただけると幸いです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> ものすごい簡単な間違いかと思うのですが、 間違いがあったとしても, 場合によって対処は色々変わるで, スッキリ 「こうすれば良い」 という回答はできません。 まず ボタン ですが, 「ムービークリップインスタンスのボタンである場合」 と 「ボタンインスタンスのボタンである場合」 の2通りが考えられますが, ご質問の感じからして, なんとなく「ボタンインスタンスのボタンである場合」のような気がするので, ムービークリップ製のボタンではないということで続けます。 次にバージョンですが, お使いの Falsh のバージョンがわかりません。 「Flash MX をご使用,または,Flash Player 6 以下の SWF をパブリッシュする場合」や, 「Flash MX 2004 以上をご使用,または,Flash Player 7 以上の SWF をパブリッシュする場合」 などなど, 様々な場合(Flash CS3 とか Flash Lite とか…)が考えられます。 ご質問の感じからして, なんとなく「Flash CS3(AS3.0)」や「Flash Lite」は考えられないので, 「Flash MX をご使用,または,Flash Player 6 以下の SWF をパブリッシュする場合」 と, 「Flash MX 2004 以上をご使用,または,Flash Player 7 以上の SWF をパブリッシュする場合」 の2通りについて回答します。 またテキストフィールドの名前(> scoreと名付けたダイナミックテキスト)ですが, 「テキストフィールドの名前 score は,変数名のことである」 のか, 「テキストフィールドの名前 score は,インスタンス名のことである」 のかがわかりません。 どちらの場合も考えられるので,両方回答します。 全ての場合についての回答にはなっていませんが, つまり,2×2=4(通り) の場合についての回答です。 ◎「Flash MX をご使用,または,Flash Player 6 以下の SWF をパブリッシュする場合」 で, 「テキストフィールドの名前 score は,変数名のことである」場合。 ボタンには次のように書くのが無難で良いと思います。 ---------------------------------- on (release) { count++; if (count == 10) { _parent.score = Number(_parent.score)+10; } } ---------------------------------- ◎「Flash MX をご使用,または,Flash Player 6 以下の SWF をパブリッシュする場合」 で, 「テキストフィールドの名前 score は,インスタンス名のことである」場合。 ボタンには次のように書くのが無難で良いと思います。 ---------------------------------- on (release) { count++; if (count == 10) { _parent.score.text = Number(_parent.score.text)+10; } } ---------------------------------- ◎「Flash MX 2004 以上をご使用,または,Flash Player 7 以上の SWF をパブリッシュする場合」 で, 「テキストフィールドの名前 score は,変数名のことである」場合。 Flash Player 7 以上の SWF をパブリッシュする場合は, count++; でいきなり,変数 count に 1 を加算することはできません。 Flash MX までは,初期値を設定していない変数の値は, 「0」 もしくは 「""(空白文字列)」 として自動的に処理が進んでいました。 Flash MX 2004 以降(Flash Player 7 以上の SWF をパブリッシュする場合)は, 初期値を設定していない 変数count は undefined ですから,「0」 でも 「""」 でも何でもありません。 undefined な 変数count に 1 を加算しても「NaN(非数)」 になるだけで, 1にはなりませんし,「NaN」にさらに 1 を加算しても 「NaN」 のままです。 したがって,ボタンを配置したムービークリップ内のタイムラインなどに, count を初期化するための1文が必要になります。 ムービークリップのボタンを配置したフレームの,違うレイヤーのキーフレームに, 次のスクリプトを書きます。 ----------------------------- // 変数 count の初期化 count = 0; ----------------------------- そして,ボタンには次のように書くのが無難で良いと思います。 ---------------------------------- on (release) { count++; if (count == 10) { _parent.score = Number(_parent.score)+10; } } ---------------------------------- ◎「Flash MX 2004 以上をご使用,または,Flash Player 7 以上の SWF をパブリッシュする場合」 で, 「テキストフィールドの名前 score は,変数名のことである」場合。 ムービークリップのボタンを配置したフレームの,違うレイヤーのキーフレームに, 次のスクリプトを書きます。 ----------------------------- // 変数 count の初期化 count = 0; ----------------------------- ボタンには次のように書くのが無難で良いと思います。 ---------------------------------- on (release) { count++; if (count == 10) { _parent.score.text = Number(_parent.score.text)+10; } } ---------------------------------- まだまだ場合は多数考えられますので, 上のうちどれかをしてみても,うまく行かない可能性は十分あります。
お礼
FLASHのバージョンは8で、 今回はボタンインスタンスのボタンでした。 キチンと書いてなかったにもかかわらず、 何パターンもの回答頂き、本当に感謝しています。 ◎「Flash MX 2004 以上をご使用,または,Flash Player 7 以上の SWF をパブリッシュする場合」 で, 「テキストフィールドの名前 score は,変数名のことである」場合。 の ---------------------------------- on (release) { count++; if (count == 10) { _parent.score = Number(_parent.score)+10; } } ---------------------------------- のスクリプトでうまく出来ました! 前回も今回も質問にお答え頂いて、 ほんとうにありがとうございました! まわりにFlashやっている人がいないので、 この質問サイトでのお答えに助けて頂いてます。