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

FLASH LITE1.1でクイズの制限時間を任意に設定しようとしているのですがうまくいきません。

やろうとしていることは、
ユーザーが入力テキストに制限時間(秒)を入力し、その時間が経過したら特定のフレームに跳ぶ、
ということです。

具体的には次のようにしています。

入力テキストの変数を「lmt」としてルートの2フレームに配して停めておき、*キーでスタートさせます。
ルートの3フレームにMC「c_mc」を置き、ダイナミックテキストの変数「cnt」を設定して、「c_mc」の1フレームから10フレームをループさせることで秒数を表示し(10fps)ます。
そして、ルートの3フレームに次のASを書いています。

tellTarget("/c_mc"){play();}
if(lmt == /:cnt){gotoAndPlay("tokutei");}

if の条件がうまく書けていないかと思うのですが、evalを使ったり、""を使ったりしても結局うまくいきませんでした。
おわかりになる方、ぜひご教授いただきたいと思いますので、よろしくお願いいたします。

A 回答 (1件)

if文 の条件の書き方とかいう問題ではなくて


もっと根本的なことで
if文 が実行されるタイミングの問題ではないでしょうか?

書かれていらっしゃる内容だと
ルートの3フレーム が表示されたとたんに if文 が実行されます。

そうではないのでは?

if文 が実行されるのは
少なくとも指定秒に達した後でなければなりませんよね?
例えば テキスト入力変数lmt に 5 と入れた場合は,
少なくとも 5 秒たってから if文 が実行される必要があるでしょう?

そしたらそのようになるようにしなければ...。

ムービークリップ「c_mc」の中はどうなっているのかわかりませんが,
例えば「c_mc」内の 10フレーム に
/:cnt++;
などと書いてルートの変数cntの値を1ずつ加算していたとします。
そうでしたら
その後に if文 を入れるべきでしょう。

例↓
---------------------------------
/:cnt++;
if (Number(/:lmt) == /:cnt) {
tellTarget ("/") {
gotoAndPlay("tokutei");
}
}
---------------------------------


※Number(/:lmt) の部分は /:lmt だけでも良いと思いますが
 テキストフィールドの入力値は
 基本的に文字列として扱われてしまうことが多いので
 念のため Number() で数値化しています。



ムービーの構造全体が把握できていないため
これで良いかどうかはわかりませんが
路線としてはこのような感じにすべきだと思います。
    • good
    • 0
この回答へのお礼

ありがとうございます。
ムービークリップの中にif文を書くことは全く想定していませんでした。
また、tellTarget ("/")という書き方も知りませんでした。
とても学ばせていただきました。
本当にありがとうございました。

お礼日時:2011/06/05 19:49

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