• ベストアンサー

actionscript3のテキスト入力で最大値

actionscript3のテキスト入力で数値のみ入力可能にしているのですが、入力できる数値の最大値を設定する方法がわかりません。どなたかご教授頂けないでしょうか?よろしくお願い致します。

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

「数値の最大値」と書いていらっしゃるからには 例えば 3桁 とか 4桁 という 「桁数制限(=文字数制限)」 ではなくて 例えば 123(百二十五) とか 123.4 という 「数値の最大値制限」ですよね? それでしたら 色々な場合が考えられるのですから 単純な "設定" と言うよりは その場合場合に応じたプログラムを考えるべきだと思います。 例えば 入力可能な値が 正の数も負の数も アリで,なおかつ 小数 も アリ だとします。 そして 最大値 が 123.4 であったとします。 その場合のフレームに書くスクリプト例です↓。 =================================================== //---↓適当に入力TextField「my_txt」を作成&配置↓--- var my_txt:TextField = new TextField(); my_txt.type = TextFieldType.INPUT; //↓「0~9」 と 「-」 と 「.(小数点)」 のみ入力可 my_txt.restrict = "0-9\\-."; my_txt.border = true; my_txt.x = my_txt.y = 20; my_txt.width = 100; my_txt.height = 24; addChild(my_txt); //---↓本題の動作↓--- //最大値を設定 var max_num:Number = 123.4; //「my_txt」テキスト変更時に関数 onTextChange を実行 my_txt.addEventListener(Event.CHANGE,onTextChange); //関数 onTextChange の定義 function onTextChange(e:Event):void{ //もし入力値が max_num より大きい場合 if(Number(e.target.text) > max_num){ //入力値を max_num にする e.target.text = String(max_num); //その時の文字数をカウント var text_len:int = e.target.text.length; //カーソルの位置を最終位置にする e.target.setSelection(text_len,text_len); } } =================================================== 上記スクリプト中に  //その時の文字数をカウント  var text_len:int = e.target.text.length;  //カーソルの位置を最終位置にする  e.target.setSelection(text_len,text_len); という部分がありますが これは たとえば 567 という値を入力したとき 強制的に 123.4 という値にすれば 元のカーソルの位置が 567 の 7(3文字目) の後のままそれが維持されるため 何だか不自然だと感じたため 文字列の最終文字の後に カーソル を移動させるためだけのものです。 小数が元から入らなければあまり考える必要はありません。 以上のように1例を挙げてみましたが その他色々な場合が考えられるのですから 単純な "設定" と言うよりは その場合場合に応じたプログラムを考えるべきだと思います。 プログラミング "しなければならない" と考えると面倒かもしれませんが その場に応じたプログラミングが "できる" と考えれば それが Flash の長所であると言えます。

skope
質問者

お礼

ご回答頂きありがとうございます!! プログラム初心者かつ独学でやっており本当に困っておりました。。思っていたとおりの動作になりました!本当にありがとうございます。もっと勉強して頑張ります!!

すると、全ての回答が全文表示されます。

関連するQ&A