重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

ムービークリップシンボルの中にある
ボタンを10回クリックすると、
シーン1のscoreと名付けたダイナミックテキストに10点加える
ということをやりたいと思っています。

それでボタンに直接
on (release) {
count++;
if (count == 10) {
_parent.score = (_parent.score+10);
  }
}
というスクリプトを打って、
ひとつ上のレイヤーにcount = 0;と入れています。

どこが間違っているのでしょうか?

ものすごい簡単な間違いかと思うのですが、
1人でやっているとなかなか同じところを
グルグルしてしまいわからなくなってしまい。。

ちなみに仕事の規定で、_root表記が使えません。
分かる方いらっしゃいましたら、
是非とも回答お願いいたします。

A 回答 (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;
}
}
----------------------------------



まだまだ場合は多数考えられますので,
上のうちどれかをしてみても,うまく行かない可能性は十分あります。
    • good
    • 0
この回答へのお礼

FLASHのバージョンは8で、
今回はボタンインスタンスのボタンでした。
キチンと書いてなかったにもかかわらず、
何パターンもの回答頂き、本当に感謝しています。

◎「Flash MX 2004 以上をご使用,または,Flash Player 7 以上の SWF をパブリッシュする場合」
  で,
  「テキストフィールドの名前 score は,変数名のことである」場合。

----------------------------------
on (release) {
count++;
if (count == 10) {
_parent.score = Number(_parent.score)+10;
}
}
----------------------------------
のスクリプトでうまく出来ました!

前回も今回も質問にお答え頂いて、
ほんとうにありがとうございました!
まわりにFlashやっている人がいないので、
この質問サイトでのお答えに助けて頂いてます。

お礼日時:2007/10/22 16:13

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!