• ベストアンサー

文字数制限

FlashLite1.0でステージ上にテキストフィールドと0~9のボタンを作成し、ボタンを押すとテキストフィールドに数字が表示されます。 数字をずっと押すとフィールドから見えなくなっても数字が無限に表示されている状態なので文字数制限をつけたいと思っています。 文字数制限のスクリプトはmaxlengthがあるので使ってみたのですがうまくいきません。 どのようにすれば制限をつけられるでしょうか?

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

  • ベストアンサー
noname#35109
noname#35109
回答No.2

以前,10個のボタンを用意するように書いた者です。 あのあと, よく考えると,ボタンは1個で良かったことに気づきました。 ですから, #1の方の方法と同じになるかもしれませんが 訂正と回答をさせていただきます。 0~9までを表示させるボタンは10個も必要なく, 実は1個でOKで,ずっと続けて書けば良いのでした。 ステージ上に置いた mytxt という変数名のテキストフィールドがあり, 文字数制限が 5 文字であった場合の, 1つのボタンに書くスクリプトです。 ----------------------- on (keyPress "0") { if (length(mytxt)<5) { mytxt = mytxt add 0; } } on (keyPress "1") { if (length(mytxt)<5) { mytxt = mytxt add 1; } } on (keyPress "2") { if (length(mytxt)<5) { mytxt = mytxt add 2; } } on (keyPress "3") { if (length(mytxt)<5) { mytxt = mytxt add 3; } } on (keyPress "4") { if (length(mytxt)<5) { mytxt = mytxt add 4; } } on (keyPress "5") { if (length(mytxt)<5) { mytxt = mytxt add 5; } } on (keyPress "6") { if (length(mytxt)<5) { mytxt = mytxt add 6; } } on (keyPress "7") { if (length(mytxt)<5) { mytxt = mytxt add 7; } } on (keyPress "8") { if (length(mytxt)<5) { mytxt = mytxt add 8; } } on (keyPress "9") { if (length(mytxt)<5) { mytxt = mytxt add 9; } } ----------------------- length(mytxt) で mytxt の文字列の長さを取得し, もしその文字数が 5 未満であれば mytxt = mytxt add ○ を実行するということです。 原型は以上です。 でも同じ事を何度も書きすぎですよね。 そして,5文字制限を 6文字制限に変えようと思ったとき, その修正が大変です。 容量の制限を減らすという意味でも,call関数を使った方が良いと思います。 フレーム1 に他に何もスクリプトがなければ, フレーム1 に次のスクリプトを書いてください。 もし他に書いてあれば, 違うフレームの方が無難だと思います↓。 ------------------------ if (length(mytxt)<5) { mytxt = mytxt add n; } ------------------------ そして,ボタンには次のように書きます↓。 ----------------------- on (keyPress "0") { n = 0; call(1); } on (keyPress "1") { n = 1; call(1); } on (keyPress "2") { n = 2; call(1); } on (keyPress "3") { n = 3; call(1); } on (keyPress "4") { n = 4; call(1); } on (keyPress "5") { n = 5; call(1); } on (keyPress "6") { n = 6; call(1); } on (keyPress "7") { n = 7; call(1); } on (keyPress "8") { n = 8; call(1); } on (keyPress "9") { n = 9; call(1); } ----------------------- call関数は, ( )内に書かれたフレーム番号のスクリプトを実行する関数です。 call(1); ですから,フレーム1 のスクリプトを実行しなさいという意味になります。 変数 n をボタンによって決定して,call です。 これで,文字数制限を 5 から 6 に変えようとする場合も, フレームの if 文 だけを変更すればいいことになります。 また全体的に文字数も減るので,容量も減ると思います。

ama_xx
質問者

お礼

いつも詳しいご説明ありがとうございます。 ボタンは一つでもよかったとの事で、 以前の質問の訂正までして下さり助かります。

その他の回答 (1)

noname#39970
noname#39970
回答No.1

ボタンを押した時にテキストフィールドにただ文字を加えるのではなく文字数を調べてから加える形に変更する

ama_xx
質問者

お礼

ご回答ありがとうございました。

関連するQ&A

専門家に質問してみよう