• ベストアンサー

入力された数値によって変化するFLASH

アクションスクリプト3.0でテキストフィールドに1~10のどれか数字一つを選んで入力すると四角形が作成される(10~20だと円形になるような)数値によって変化するFLASHを作成しているのですがわかりません。 とくに1~10までの数は○○になるという数値の範囲を設定するアクションスクリプトが全くわかりません。 ご教授お願い致します。

  • Flash
  • 回答数1
  • ありがとう数1

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

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

例えば次のような感じでしょうか。 ActionScript 3.0 設定の新規ドキュメントを作成し メインタイムラインのフレーム1に書くスクリプト例(コピペ可)↓ //------------------------------------ //~テキストフィールド「my_txt」を適当に用意~ var my_txt:TextField = new TextField(); my_txt.x = 20; my_txt.y = 20; my_txt.width = 40; my_txt.height = 22; my_txt.border = true; my_txt.background = true; //タイプ=テキスト入力 my_txt.type = TextFieldType.INPUT; //入力文字制限 my_txt.restrict = "0-9"; //入力値制限 my_txt.addEventListener(Event.CHANGE,textChangeFunc); function textChangeFunc(e:Event):void{ var str:String = e.target.text; if(str == "0"){ e.target.text = "1"; }else if(Number(str) >= 21){ e.target.text = "20"; } } this.addChild(my_txt); //(座標をずらすために変数を用意:なくても良い) var xy:Number = 0; //キーダウン時に 関数keyDownFuncを実行 my_txt.addEventListener(KeyboardEvent.KEY_DOWN, keyDownFunc); //関数keyDownFuncの定義 function keyDownFunc(e:KeyboardEvent):void { //もし「Enter」キーが押されたら if (e.keyCode == Keyboard.ENTER) { //関数makeShapeを実行 makeShape(); } } //関数makeShapeの定義 function makeShape():void { // //「my_txt」の入力文字列を数値として取得 var txt_num:int = Number(my_txt.text); // //シェイプ「my_shape」を作成 var my_shape:Shape = new Shape(); // //太さ1pxの青線の輪郭を設定 my_shape.graphics.lineStyle(1, 0x0000FF); // //赤い塗りの開始 my_shape.graphics.beginFill(0xFF0000); // //---↓★本題ココから★↓------- //もし「my_txt」の数値が 1 以上 10以下であれば if (txt_num >= 1 && txt_num <= 10) { //四角を描画 my_shape.graphics.drawRect(xy,xy,100,100); //もし「my_txt」の数値が 11以上 20以下であれば } else if (txt_num >= 11 && txt_num <= 20) { //丸を描画 my_shape.graphics.drawCircle(50+xy, 50+xy, 50); //---↑★本題ココまで★↑------- } else { //それ以外はこの関数を抜ける return; } // //(座標をずらす:ずらさなくても良い) xy += 5; // //塗りの終了 my_shape.graphics.endFill(); // //シェイプ「my_shape」を配置 this.addChild(my_shape); // //「my_txt」の表示順を一番上に移動 this.setChildIndex(my_txt,this.numChildren-1); } //------------------------------------ 上記スクリプトをメインタイムラインのフレーム1にコピペし 「制御」→「ムービープレビュー」でSWFを表示させます。 すると左上の方に表示されているテキストフィールド(四角い枠)が表示されると思うので そこに適当な数値を入力して "「Enter」キーを押す" と 入力した数値に対応した四角または丸が描画されると思います。 ※適当に入力しても   1以上20以下しか入力できないようにしています。 やたら長くてごちゃごちゃと書いていますが 上記スクリプト中の本題は,関数makeShape 内の次の部分だけです。  //もし「my_txt」の数値が 1 以上 10以下であれば  if (txt_num >= 1 && txt_num <= 10) {    //四角を描画    my_shape.graphics.drawRect(xy,100,100);    //もし「my_txt」の数値が 11以上 20以下であれば  } else if (txt_num >= 11 && txt_num <= 20) {    //丸を描画    my_shape.graphics.drawCircle(50+xy, 50+xy, 50);  } 「&&」については,【図】↓をご参考に。 あと, 座標は別に動かさなくて良いです。  //四角を描画  my_shape.graphics.drawRect(xy,xy,100,100); や  //丸を描画  my_shape.graphics.drawCircle(50+xy, 50+xy, 50); この↑部分は こう↓でも良いです。  //四角を描画  my_shape.graphics.drawRect(0,0,100,100); や  //丸を描画  my_shape.graphics.drawCircle(50, 50, 50); しかしこれだと「Enter」する度に同じ場所に図形が重なって 新たに描画されたかどうかがわからないため 動作検証用に5pxずつ座標をずらしているだけです。  

nemu11niku
質問者

お礼

わかりやすい解説ありがとうございます。 無事解決することができました。

関連するQ&A

  • ACCESS2003。数値型のフィールドに30億以上の数値を入力できない。

     DVDに焼いたファイルのデータベースをアクセスに入力しているのですが、そのサイズをバイト単位で入力しているのですが、3ギガ以上の数字を入力すると、 「このフィールドに入力した数値がただしくありません。たとえば数値型のフィールドに文字列を挿入しました」 とでます。  もうこれはテキスト形式のフィールドにするしかないのでしょうか?いままでたくさんのファイルを登録してきたので、ここでテキスト形式にすると以前のファイル等で不都合がでないか懸念を持っています。  理想は数値型でなんらかの設定をして3ギガ、30億以上の数値を入力できないものでしょうか?よろしくお願いいたします

  • アクションスクリプトでボタンを押すたびに足し算

    Flash CS5上でボタンを押す毎に、設定した数を足していくフラッシュを作りたいのですが うまく動作してくれません。 予めボタンに数字を設定して(例えば100)それをクリックすると テキストフィールドに加算されていく。というものにしたいのですが… 1回クリックで100、2回目で200、…という感じです。 表面上ではボタンと現在の数字だけがあるだけのシンプルなものです。 どのようなアクションスクリプトを記述すれば良いのでしょうか。 詳しい方、教えていただけませんでしょうか? よろしくお願い致します。

  • Flashテキスト入力

    Flashテキスト入力で、IDをユーザーが入力して、ENTERボタンを押すと入力画面が消えて、次へ進むことができる。 (この時、先程入力したID名が右上に表示された状態にしたい。) アクションスクリプト2で作りたいのですが・・・、すみません。かなり初心者なのでよろしくお願いします。

    • ベストアンサー
    • Flash
  • accessのクエリで入力が不可能…

    【テーブルA】 フィールド1〔数値型〕 フィールド2〔テキスト型〕 フィールド3〔テキスト型〕 フィールド4〔数値型〕 【テーブルB】 フィールド1〔数値型〕 フィールド2〔テキスト型〕 フィールド3〔数値型〕 フィールド4〔テキスト型〕 となっています。 両方のテーブルを使い、クエリを作成しました。 リレーションが、テーブルAのフィールド1と、テーブルBのフィールド3に設定してあります。 このようにして作成したクエリでデータの入力ができません。 なぜでしょうか? Access2000です。

  • 数値フィールドに半角数値のみを入力したい

    VB.Netで数値フィールドがあります。 この数値フィールドに半角数値の0~9のみだけを入力されるようにしたいです。 ※全角の0~9は入力はNG。もしくは、全角で入力しても、自動的に半角になれば 問題ありません。 プロパティ値を変更するなどの手段があれば、教授いただきたく。 よろしくお願いいたします。

  • actionscript アルファベットを数値に変換できる?

    Flash Actionscriptの開発で困ってます。 テキストフィールド1とテキストフィールド2があります。それぞれのフィールドに入力されたアルファベットを数値に変換(例えばAと入力されたら1、Bなら2、Cなら3)して、A+B=3のように足し算して返すにはどうしたらよいでしょうか?? こういうのを覆面算?っていうんでしょうか。

    • ベストアンサー
    • Flash
  • 最近のflash player10では

    最近のflash player10では flash player 6でパブリッシュされた昔のflash は動作しませんでした。 flash player 6 Action Script1.0 で作成したflashを簡単に flash player10 Action Script3.0 に対応させるにはどうしたらよろしいでしょうか? なにか変換ソフトのようなものはないのでしょうか? それともFLASH CS4 にそのような機能が含まれておりますか? わかる方ご教授のほど、どうぞよろしくお願いいたします。

  • flash lite 1.1 でテキストに文字が入力されたらその文字が

    flash lite 1.1 でテキストに文字が入力されたらその文字が数字であるかの確認をしたいのですが、テキスト入力の変化の取得はできるのでしょうか? フレームには stop(); を入れてある状態で、フレームは動かしてはおりません。

    • ベストアンサー
    • Flash
  • 一定の数字以上で音を鳴らしたい

    Flash CS5のAction Script3.0 でボタンをクリックするとテキストフィールドに数字が加算され、とある一定の数字になると音がなるFlashを作成しようと思い、 こちらの質問http://okwave.jp/qa/q6620056.html を元にボタンをクリックするとテキストフィールドの数字が加算されるスクリプトはわかったのですが、もしもボタンを1回クリックすると数字が100加算されるとして、数字が500になった場合にAction Script3.0を使用しライブラリから音楽を鳴らすためにはどうしたらいいでしょうか? また、数字が1000、1500・・・のように増えていった場合も音を鳴らしたいのですが、 その場合どのようにすればいいでしょうか。 下記にスクリプトを記載します。 my_txt.text = String(0) var my_num:Number = 0; my_btn.addEventListener(MouseEvent.CLICK,numUp); function numUp(e:MouseEvent):void { my_num += 100; my_txt.text = String(my_num); } if(my_num>500){ trace("ok") var sound_500 = new Music(); sound_500.play(); } -------------------- 初心者のため、スクリプトがおかしかったら申し訳ございません・・・ 詳しい方ご教授願えないでしょうか。 よろしくお願いいたします。

  • FLASH LITE1.1のテキスト入力について

    FLASH LITE1.1で、テキスト入力フィールドからユーザに数字を入力してもらい、その数字をもとにタイムライン上の適切なラベルに跳びたいのですがうまくいきません。 具体的には、フレームに次のASを書き、 fscommand2("SetInputTextType","nb","Numeric"); stop(); ボタンに、次のASを書いたのですが、 on(keyPress"*"){gotoAndPlay("eval("nb")");} うまくいきません。 クイズがタイムライン上に順に20問用意されており、それぞれのクイズの最初のフレームに、順に1~20とラベルされており、ユーザーが1~20のどれかを入力すれば、そのラベルに跳ぶようなイメージです。 ご教授いただければと思います。 よろしくお願いいたします。

    • ベストアンサー
    • Flash

専門家に質問してみよう