Flash判別式がうまくいかない?初心者の疑問

このQ&Aのポイント
  • Flash CS5で判別式を使っている初心者がいますが、うまくいかないとのことです。
  • 指定されたプログラムを実行しても正解の場合にgoodが判別されず、常にfalseになるようです。
  • 間違っている箇所を教えていただきたいとのことです。
回答を見る
  • ベストアンサー

Flash 判別式について

初心者です。判別式がうまくいきません(Flash CS5)。 box1,box2,hanbestuはダイナミックテキストで変数、ans1はテキスト入力でします(インタラクティブに入力)。 下記のプログラムでやった場合、正解の時にgoodが判別されず、常にfalseになってしまいますが、どこが間違っているのかご教示いただきたくお願いいたします。 on (release) { box1 = Math.floor(Math.random()*10+1); box2 = Math.floor(Math.random()*10+1); } on (release) { var box1:Number; var box2:Number; var ans1:Number; kaitou=box1+box2; if(ans1==kaitou){ hanbetsu="good"; }else{ hanbetsu="false"; } }

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

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

ご質問されている内容そのままで 4つのテキストフィールド にはそれぞれ 変数名 を付けて 2つのボタン(ボタンインスタンス)には書かれていらっしゃるそのままのスクリプトをコピペで貼り付けましたが 無事に動作しましたよ 【図】↓。 テキストフィールドもボタンも 全てを同じ階層(_root なら _root)に置いた場合はご質問のままでも無事に動作します。 アヤシイのはターゲットパスだと思います。 確認してみてください。 「ターゲットパス」 http://homepage3.nifty.com/ginga-b/MX/targetpath.html 階層にズレがありませんか? 例えば テキストフィールド「box1」と「box2」と「作問ボタン」は _root の階層にあるのに テキストフィールド「hanbetu」と「判別ボタン」は ムービークリップ の中にあるとか またはその逆とか または違うムービークリップ内にあるとか。 ============== 正常に動作しないという本題とはズレますが以下は他の点に関してです。 書かれていらっしゃるスクリプトは 変数の型指定が入っていますから ActionScript 2.0 です。 ActionScript 2.0 を走らせるためには 最低限 Flash Player 6 以上用の SWF をパブリッシュする必要があります。 一方 テキストフィールド に変数名を付けるのは Flash Player 5 までです。 Flash Player 6 以上では テキストフィールド に変数名を付けることは非推奨です。 「テキストフィールドのインスタンス名と変数名について」 http://help.adobe.com/ja_JP/AS2LCR/Flash_10.0/00000270.html とは言っても 実際には Flash Player 6 以上でテキストフィールド に変数名を付けることは可能ですし,不具合が起きることも稀です。 (理解・認識不足から怪奇現象が起きることは多々ありますが。) 今回のご質問の場合も テキストフィールド の変数名云々に関わらず一応は正常動作します。 正常に動作しない原因を究明して 対処してから テキストフィールド の 変数名削除 と インスタンス名付加 をお薦めします。 各テキストフィールドに変数名と同名のインスタンス名を付けた場合のスクリプトは次のようになります。 ※ただしターゲットパスは不明なので   (作者でないとわからないため)略します。   (ムービークリップは存在せず全てが同階層にある場合) ---『作問ボタン』-------- on (release) { box1.text = Math.floor(Math.random() * 10 + 1); box2.text = Math.floor(Math.random() * 10 + 1); } --------------------- ---『判別ボタン』-------- on (release) { var kaitou:Number; kaitou = Number(box1.text) + Number(box2.text); if (Number(ans1.text) == kaitou) { hanbetsu.text = "good"; } else { hanbetsu.text = "false"; } } ---------------------  

jwnegr001g
質問者

お礼

ご回答ありがとうございました。 いろいろと試行錯誤しながらも、アドバイスとおり実行した結果、ゴールにたどり着けました。ご丁寧で親切ななアドバイスに深謝します。

関連するQ&A

  • 計算式を文字入力で変更して答えを出すスクリプト

    超初心者です。宜しくお願い致します。 フラッシュ6以下で以下のような計算(式は略)を作りました。 フレーム1に X1=Number(x1); X2=Number(x2); Ans=Number(ans); function keisan1() {Ans=Math.round(X1*X2);} function keisan2() {Ans=Math.round(X1*X1*X2);} function keisan3() {Ans=Math.round(X1*X1*X2*X2);} ボタンを3つ作りそれぞれのアクションに on (release) {keisan1();} on (release) {keisan2();} on (release) {keisan3();} を割り当てて計算出来ています。 このボタンを1個にしてSiki=String(siki);のような文字入力のテキスト欄をもう一つ作って この入力欄にAと入力してボタンを押すとkeisan1()のAns、またBと入力してボタンを押すとkeisan2()のAns、 Cと入力してボタンを押すとkeisan3()が実行するように作りたいと思っています。フレームやボタンにはどんなアクシ ョンを記述すれば良いのか、しばらくの間考えこんでいますが私の技術では全くできませんでした。 どなたか御教授頂けないでしょうか?どうか宜しくお願い致します。

    • ベストアンサー
    • Flash
  • JavaScriptを使ってロト6の当選数字を予想するプログラムを考えたのですが・・・

    Math.floor(Math.rondom()*10);を使うと、小数点以下の数字を出さない。 と先生に教えられたのですが、 ((Math.floor(Math.random() * 10)) + (Math.floor(Math.random() * 10))) * (Math.floor(Math.random() * 10)) + 1; を変数に入れて、テキストボックスに出力してみると、なんと小数点が出てしまいます! しかも、27.5や59.5などと、ちょうど0.5が出てしまいます。 この0.5を出さないように、ランダムで数字を出したいのですが、Math.floor以外で使えるものがあったら教えてください。 よろしくお願いします。

  • テキスト入力ボックスからテキスト入力ボックスへエンターキーで移動する方法

    FLASH8でかけ算クイズを作っています。   □ × □ = □           ↓エンターキーで移動させる   □ × □ = □             ○→問題ボタン 1.問題ボタンに on (release) { myBox2 = Math.floor(Math.random()*9+1);} と入力をし、クリックをした後に解答ボックスに自動的に移動させ、解答欄のテキストボックスに答えをいれてエンターキーを押すと次の問題の解答欄に移動させたいのですがなかなかうまくいきません。FLASHではこの設定はムリなのでしょうか?こどもが使うとしたらエンターで移動するようにしないと難しいので是非教えていただきたいです。

  • Flash MX2004で計算結果が「NaN」になります

    Flash MX2004で、以下のスクリプトをボタンに設定しようとしていますが、最終的な計算結果が「NaN」になってしまいます。 /* 正解を集計して合計フィールに代入する */ on (rollOver) { var kai:Number = Number(kotaeA01.text)+Number(kotaeA02.text)+Number(kotaeA03.text)+Number(kotaeA04.text)+Number(kotaeA05.text)+Number(kotaeA06.text)+Number(kotaeA07.text)+Number(kotaeA08.text)+Number(kotaeA09.text)+Number(kotaeA10.text)+Number(kotaeA11.text)+Number(kotaeA12.text)+Number(kotaeA13.text)+Number(kotaeA14.text)+Number(kotaeA15.text); kaitou.text = kai; } kotaeA**.textとkaitou.textはTextInputコンポーネントです。 変数kaiに数値として、kotaeA**.textを加算していき、最後にkaitou.textへ代入しようとしています。

  • JavaScript/HTML5での図形の描写

    canvasを使って図形の描写をするコードを書いています。 javascript初心者なりに考え、調べたのですがどうしてもわからなかったのでどなたか教えてください。 「入力された値を半径とした円をcanvas内のランダムな位置に、ランダムな色で複数描写する」という風にしたいのです。値は好きなだけ入れれるようにしてあります。現段階でランダムな位置に描写することはできるのですが、黒縁の白い円しか描写できません。「ランダムに彩色する」部分をどのように記述したらよいのかご教授願います。 【以下書いたコード】 function draw() { var canvas = document.getElementById('mycanvas'); var ctx = canvas.getContext('2d'); var r = parseInt(document.getElementById("radius").value); ctx.beginPath(); var drawPointX = Math.floor( Math.random() * 1200 ) + 1; var drawPointY = Math.floor( Math.random() * 600 ) + 1; ctx.arc( drawPointX, drawPointY, r, 0, Math.PI*2, true ); //ランダムな色を生成・彩色する var r = parseInt(Math.random() * 255); var g = parseInt(Math.random() * 255); var b = parseInt(Math.random() * 255); var alpha = Math.random(); var rgba = "rgba("+r+", "+g+", "+b+", "+alpha+")"; ctx.fillStyle=rgba; ctx.stroke(); }

  • atttachmovie で配置エリアの限定

    actionscript 初心者です。 for文の中で var x:Number = Math.floor(Math.random()*1000)-500; var y:Number = Math.floor(Math.random()*650)-325; _root.space.attachMovie("btn_mc1", "btn_mc"+i,0-i, init); _root.["btn_mc"+i]._x = x; _root.["btn_mc"+i]._y = y; というスクリプトで、btn_mcというmcをランダムに配置しています。 (このスクリプト、間違っているかもです。すみません) 配置位置は今1000px×650pxのステージ中でランダムになっているのですが これを、このステージいっぱいの楕円形があると仮定して その中にだけ、配置するということをスクリプトでできるでしょうか?? つまり、mcがぼんやりと楕円形に集まっている。。というような状態に したいのです。 楕円のマスクをかける、という方法ですと、mcが欠けてしまい、 見栄えがよろしくないです。。 よろしければ、お教えいただけると、幸いです。 お願いいたします m(__)m

    • ベストアンサー
    • Flash
  • 円をランダムで描画していき、最初の円から徐々に透明になる

    現在AS3.0にてランダムで永遠と円を描きながらも、描画した円から順番に透明になっていくスクリプトを書いているのですが、以下のスクリプトですと全体が透明になっていき、最終的に何も残らなくなってしまいます。 常に透明度1の円を描画しつつも、先に描画した円から徐々に透明になっていくスクリプトにするにはどうすればよいのでしょうか?ご教授お願いできればと思います。 addEventListener(Event.ENTER_FRAME, rain); import flash.display.Sprite; import flash.display.MovieClip; var mySprite:Sprite = new Sprite(); var myClip:Sprite = new Sprite(); addChild(myClip); function rain(event:Event):void { with(mySprite.graphics) { var circle:int = Math.floor(Math.random()*100); var stageX:int = Math.floor(Math.random()*stage.stageWidth); var stageY:int = Math.floor(Math.random()*stage.stageHeight); beginFill(0x000000); drawCircle(stageX, stageY , circle); endFill; myClip.addChild(mySprite); var diff:Number = 0.01; myClip.alpha -= diff; } }

    • ベストアンサー
    • Flash
  • ActionScript3.0の質問です

    このようなプログラムも考えました。 デバッグではエラーは出ませんでしたが、論理的、プログラム的に問題はありますでしょうか? function fl_GenerateRandomNumber(limit:Number):Number { var randomNumber:Number = Math.floor(Math.random()*(limit+1)); return randomNumber; } var xxx:Number=fl_GenerateRandomNumber(3); Button_1.addEventListener(MouseEvent.CLICK, fl_ClickToGoToAndStopAtFrameButton); function fl_ClickToGoToAndStopAtFrameButton(event:MouseEvent):void { if(xxx==0) {this.gotoAndStop(3);} else {this.gotoAndStop(7);} } function fl_GenerateRandomNumber2(limit:Number):Number { var randomNumber:Number = Math.floor(Math.random()*(limit+1)); return randomNumber; } var xxx2:Number=fl_GenerateRandomNumber2(3); Button_2.addEventListener(MouseEvent.CLICK, fl_ClickToGoToAndStopAtFrame2Button); function fl_ClickToGoToAndStopAtFrame2Button(event:MouseEvent):void { if(xxx2==1) {this.gotoAndStop(4);} else {this.gotoAndStop(7);} }

    • ベストアンサー
    • Flash
  • Flash 大文字小文字の判別

    ユーザにテキスト入力させた値を 大文字小文字関係なく判定するにはどうすればよいでしょうか? 正解値が「ABC」(←小文字でも可)の場合 --------------------------------------------- on(release){ if(atai=="ABC"){ trace("success!!") } } --------------------------------------------- としていましたが、 「abc」と入力されても正解とするため、 --------------------------------------------- on(release){ if(atai=="ABC" || atai=="abc"){ trace("success!!") } } --------------------------------------------- として、小文字にも対応させました。 例えば、「Abc」「aBc」「abC」・・・など 入力された文字を、大文字小文字一切関係無く 全て正解とする場合、どうすればよいでしょうか?

  • JavaScriptで数値をimgに設定する

    JavaScriptで 下記のソースにてランダムで出した数値を htmlの width="" height=""に 設定するには どのようにすればよいのでしょうか? <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8" /> <title></title> </head> <body> <script> var width = Math.floor(Math.random() * 400) + 1; var height = Math.floor(Math.random() * 400) + 1; </script> <img src="hoge.jpg" alt="" width="" height=""> </body> </html>