- ベストアンサー
入力された数値によって変化するFLASH
アクションスクリプト3.0でテキストフィールドに1~10のどれか数字一つを選んで入力すると四角形が作成される(10~20だと円形になるような)数値によって変化するFLASHを作成しているのですがわかりません。 とくに1~10までの数は○○になるという数値の範囲を設定するアクションスクリプトが全くわかりません。 ご教授お願い致します。
- みんなの回答 (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ずつ座標をずらしているだけです。
お礼
わかりやすい解説ありがとうございます。 無事解決することができました。