- ベストアンサー
FLASH LITE1.1のテキスト入力について
- FLASH LITE1.1で、テキスト入力フィールドからユーザに数字を入力してもらい、その数字をもとにタイムライン上の適切なラベルに跳びたいのですがうまくいきません。
- 具体的には、フレームに次のASを書き、fscommand2("SetInputTextType","nb","Numeric"); stop(); ボタンに、次のASを書いたのですが、on(keyPress"*"){gotoAndPlay("eval("nb")");} うまくいきません。
- クイズがタイムライン上に順に20問用意されており、それぞれのクイズの最初のフレームに、順に1~20とラベルされており、ユーザーが1~20のどれかを入力すれば、そのラベルに跳ぶようなイメージです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> 順に1~20とラベルされており ラベルとは...??? フレームに1~20というラベル名を付けたのですか? まずそれがダメでしょう。 "ラベル名" なら "ラベル名" らしく,ちゃんと文字列にしないと。 例えば フレームに「label1」~「label20」というラベル名を付けたとします。 その場合, ボタンに書くスクリプトは次のようになります。 ---------------------------- on (keyPress "*") { gotoAndPlay("label" add nb); } ---------------------------- gotoAndPlay() または gotoAndStop() の引数が1つの場合 その引数は 「フレームラベル名」 または 「フレーム番号」 として Flash Player に受けとられます。 gotoAndPlay("文字列") の場合「フレームラベル名」として受けとられ gotoAndPlay(整数値) の場合「フレーム番号」として受けとられます。 また, Flash Lite 1.x では 数値加算演算子 と 文字列加算演算子 が区別されています。 「+」が数値加算演算子で,「add」が文字列加算演算子です。 (例: 1+1→2 , 1 add 1→11) なお Flash Player 5 以降は 数値加算演算子 と 文字列加算演算子 の区別はなくなり, どちらであっても 「+」 を使います。 (例: 1+1→2 ,Number(String(1)+String(1))→11) あと, eval は インスタンス や 変数 を文字列で呼ぶときに使うものです。 今回の場合は全く関係しないでしょう。 ---一般的なevalの使用例------------ for (i=1; i<=10; i++) { eval("Hensuu" add i) = i; } trace(Hensuu5); -------------------------------- ---あえて今回のものに使用すると------- on (keyPress "*") { gotoAndPlay("label" add eval("nb")); } -------------------------------- ↑回りくどくてややこしくなっただけです。 evalを使う必要は全くありません。 なお Flash Player 5 以降, eval の使用は非推奨(半使用禁止)になりました。 代わりに 「配列アクセス演算子」 を使います。 動作検証時の作成物画面例↓
お礼
ラベルや引数の書き方等とてもよくわかりました。 本当にありがとうございました。