• ベストアンサー

計算をFLASHかjavascriptで

FLASH8 win を使っております。 ホームページ上に FLASHかjavascriptで計算表を作りたいと思っております。 たとえば (1)のテキストボックスに任意数値入力 (2)のテキストボックスに任意数値入力 ((1)テキストボックス-(2)テキストボックス)×7000=(3)テキストボックス (3)テキストボックス÷30=(4)テキストボックス のように(1)と(2)を入力すれば(3)と(4)が自動入力されるような仕組みは どのようにしたらよろしいのでしょうか。 よろしくお願い申し上げます。

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

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

Flash の ActionScript では次のようにすればできます。 新規ドキュメントを作成して,次のスクリプトをフレーム1にコピペし, 「制御」→「ムービープレビュー」 もしくは 任意の場所に SWF をパブリッシュします。 ///////////////////////////////////////////////////////////////////// // ---↓テキストフィールドを手動作成する場合は削除↓--- for (i=1; i<=4; i++) { // インスタンス名 my_txt1 ~ my_txt4 を作成 this.createTextField("my_txt"+i, i, 100*(i-1)+20, 20, 90, 22); // 周囲の枠線を表示 this["my_txt"+i].border = true; // インスタンス名 my_txt1 と my_txt2 の場合 if (i<=2) { // テキスト入力のテキストフィールドに設定 this["my_txt"+i].type = "input"; // 入力文字を 0~9 に制限 this["my_txt"+i].restrict = "0-9"; } } // ---↑テキストフィールドを手動作成する場合は削除↑--- // 計算動作をするユーザ定義関数 myKeisan の定義 function myKeisan() { // (my_txt1の数値-my_txt2の数値) ×7000 を my_txt3 に表示 my_txt3.text = (Number(my_txt1.text)-Number(my_txt2.text))*7000; // my_txt3の数値÷30 を my_txt4 に表示 my_txt4.text = Number(my_txt3.text)/30; } // my_txt1 と 2 に何か入力されたとき myKeisan を実行 my_txt1.onChanged = myKeisan; my_txt2.onChanged = myKeisan; ///////////////////////////////////////////////////////////////////// JavaScript はあまり詳しくないので,突っこまれてもよくわかりませんが, 次のような HTML でできると思います。 ///////////////////////////////////////////////////////////////////// <html> <head> <title>Keisanki</title> <script type="text/javascript"> <!-- function myKeisan() { val1 = document.my_form.my_txt1.value; val2 = document.my_form.my_txt2.value; // (my_txt1の数値-my_txt2の数値) ×7000 を val3 に代入 val3 = (parseInt(val1)-parseInt(val2))*7000; // my_txt3 に val3 の値を表示 document.my_form.my_txt3.value = val3; // val3÷30 を my_txt4 に表示 document.my_form.my_txt4.value = val3/30; } //--> </script> </head> <body> <form name="my_form"> <input name="my_txt1" onKeyUp="myKeisan()" >&nbsp; <input name="my_txt2" onKeyUp="myKeisan()" >&nbsp; <input readOnly name="my_txt3">&nbsp; <input readOnly name="my_txt4"> </form> </body> </html> ///////////////////////////////////////////////////////////////////// (0~9 の入力制限をかけようかと思いましたが, 制限の方がこの計算よりはるかに難しいのでやめました。)

yajizou
質問者

お礼

BlurFiltan様 ご連絡ありがとうございます。すごいことですね。 フラッシュなどはフレームに入力するだけで表示されるのですね。 作っていただいたサンプルを元に、自分なりに勉強したいと思っております。本当にありがとうございました。

関連するQ&A

専門家に質問してみよう