• ベストアンサー

アクションスクリプトで、足し算、引き算をするには?

FLASHのアクションスクリプトでテキストエリアに打ち込んだ数字を足し算、引き算させるには、どう記述すればよいのでしょうか? その際、数字のみしか、打ち込めないようにすることは可能ですか? 参考になるサイト等ありましたら、教えていただけないでしょうか? よろしくお願いいたします。

noname#223882
noname#223882
  • Flash
  • 回答数3
  • ありがとう数2

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

  • ベストアンサー
noname#35109
noname#35109
回答No.1

「テキストエリア」というのは, 「TextAreaコンポーネント」のことではなく,テキストフィールドのことではないでしょうか? 「テキストエリア」ではなく,「テキストフィールド」 ということと勝手に解釈して回答します。 まず, テキストツール(「A」マークのボタン)で, ステージ上に3つのテキストフィールドを作成します。 このとき, 3つのうち2つは,数値を入力するための「テキスト入力」のテキストフィールド, 残りの1つは計算結果を表示するための「ダイナミックテキスト」として用意します。 数値を入力するための2つのテキストフィールドにはそれぞれ, 「a」 というインスタンス名と,「b」というインスタンス名を付けておいたとしておきます。 そして, 計算結果を表示するためのテキストフィールドには, 「c」というインスタンス名を付けておいたとします。 「a」 と「b」に入力された数字とを足し算して「c」に出力したい場合, ボタンをクリックして計算を実行させるとするなら, ステージ上にボタンを(ボタンシンボルのインスタンス)を作成して, そのボタンに次のように書きます。 ---------------------------------------- on (release) { c.text = Number(a.text)+Number(b.text); } ---------------------------------------- テキストフィールドに入力された物は, 通常 "文字列" として扱われますから, 「a」と「b」に入力された文字を, Number関数で文字列を数値に変換し,足し算しています。 > 数字のみしか、打ち込めないようにすることは可能ですか? これには, テキストフィールドクラスの restrictプロパティを使います。 「a」,「b」,「c」が存在するフレームに次のように書けば, テキストフィールドに 0~9 までしか入力できないような制限がかかります。 ------------------------------------ a.restrict = "0-9"; b.restrict = "0-9"; ------------------------------------ Flashドキュメンテーション (Flash 8 のヘルプ) より restrict (TextField.restrict プロパティ) http://livedocs.macromedia.com/flash/8_jp/main/00002771.html  

noname#223882
質問者

補足

早速やってみたところ、うまくできました。 ありがとうございます! ただ、頭が0からはじまると、計算結果が正しく表示されないようです。 どうすればよいかご存知でしょうか? もう2点。 ・数字を「1,500,000」のような通貨表示させることは可能でしょうか? ・ボタンではなく、数字を打ち込むたびに計算結果を表示させることは可能でしょうか? ご存知でしたら教えていただけないでしょうか。 よろしくお願いいたします。

その他の回答 (2)

noname#35109
noname#35109
回答No.3

#1&2です。 > ちなみに、a・bのテキストをカンマ表記にすることは可能なのでしょうか? できますよ。 できますけど,#2では, > 計算結果をさらに次の計算に使うような場合は, > ややこしくなるだけなので,カンマを入れるのはやめた方が良いです。 と書いたでしょう。 わざわざややこしい方&難しい方に突き進んでいませんか? 最初は C=A+B (AとBを足した値をCに代入) というような単純な加算の話だったわけで, そういう内容とはぜんぜん違う方向に走り出していると思いますし, カンマを付ける付けないという問題は, 単なる装飾の問題で,本来の計算とは別次元の話だと思うのですが...。 一応#2の最後のスクリプトを書き直すと次のようになります。 //////////////////////////////////////////////////////////// a.restrict = "0-9"; b.restrict = "0-9"; //------ function setComma(mystr) { if (mystr.length>3) { mystr = arguments.callee(mystr.substr(0, -3))+","+mystr.substr(-3); } return mystr; } //------ // キー監視用のインスタンスオブジェクトを作成 myKey = new Object(); // キーを押したときの動作定義 myKey.onKeyUp = function() { // 「a」が空白でなければ if (a.text != "") { // 「a」をカンマで分けて空白で結合 a.text = a.text.split(",").join(""); } // 「b」が空白でなければ if (b.text != "") { // 「b」をカンマで分けて空白で結合 b.text = b.text.split(",").join(""); } // 「a」も「b」も空白でなければ if (a.text != "" && b.text != "") { c.text = setComma(String(parseInt(a.text, 10)+parseInt(b.text, 10))); } // 「a」が空白でなければ if (a.text != "") { a.text = setComma(String(parseInt(a.text, 10))); } // 「b」が空白でなければ if (b.text != "") { b.text = setComma(String(parseInt(b.text, 10))); } // フォーカスの当たったテキストフィールドのフォーカス移動 myforcus = Selection.getFocus(); Selection.setSelection(eval(myforcus).text.length, eval(myforcus).text.length); }; // キー監視用のインスタンスをキークラスのリスナーに登録 Key.addListener(myKey); //////////////////////////////////////////////////////////// これが, C=A+B の発展系にはぜんぜん思えませんのですが。

noname#223882
質問者

お礼

ご回答ありがとうございます。 そうですね。当初抱いた疑問とずれてしまいました。 ただ、とても参考になったことは確かです。 本当に感謝いたします。

noname#35109
noname#35109
回答No.2

#1です。 > 頭が0からはじまると、計算結果が正しく表示されないようです。 > どうすればよいかご存知でしょうか? 0x で始まる数値は 16 進数として解釈されます。 また 0 で始まる数値 8 進数として解釈されます。 したがって,8進数に解釈されないように pareseInt関数 を使います。 ここまでで#1で書いたボタンのスクリプトは次のようになります。 --------------------------------------------- on (release) { c.text = parseInt(a.text, 10)+parseInt(b.text, 10); } --------------------------------------------- 「0で始まる数値が0に変わってしまう」 http://www.fumiononaka.com/TechNotes/Flash/FN0109004.html ////////////////////////////////////////////////////////////// > ・数字を「1,500,000」のような通貨表示させることは可能でしょうか? そういう,PHP の number_format のようなものは AcrionScriptには元からないので,自分でそう表示するように考えなければなりません。 でも, 良い参考 URL がありました。 Macromedia MAX 2004 Japan ActionScript 2.0とは入門編 http://www.fumiononaka.com/Sample/MAX2004/ActionScript2Basic.html ここまでで, #1の書いたスクリプトは次のようになります。 フレームのスクリプト -------------------------------------------- a.restrict = "0-9"; b.restrict = "0-9"; function setComma(mystr) { if (mystr.length>3) { mystr = arguments.callee(mystr.substr(0, -3))+","+mystr.substr(-3); } return mystr; } -------------------------------------------- ボタンのスクリプト -------------------------------------------- on (release) { c.text = setComma(String(parseInt(a.text, 10)+parseInt(b.text, 10))); } -------------------------------------------- ※カンマが入った文字列は,単なる数値の文字列ではないので,  Number関数やparseInt関数だけでは元の数値に戻りませんよ。  計算結果をさらに次の計算に使うような場合は,  ややこしくなるだけなので,カンマを入れるのはやめた方が良いです。 ////////////////////////////////////////////////////////////// > ・ボタンではなく、数字を打ち込むたびに > 計算結果を表示させることは可能でしょうか? これが最難関...。 というか,やること自体は難関でも何でもなく簡単なのですが, 「ボタンを使用しなければ,足し算と引き算をどうやって区別するの?」 という疑問が湧いてきます。 でも,そういうことをどうするのかは,考えていただくとして, 数字を打ち込むたびに計算結果を表示させることについて純粋に回答します。 数字を打ち込むたびに計算結果を表示させるということは, 何かキーを押すたびに 「on (release) { }」 の { } 内を実行させればいいということになります。 #1で作成したボタンは消してください。 そして,フレームに次のように書けば,補足で書かれているようなことができます。 ------------------------------------------- a.restrict = "0-9"; b.restrict = "0-9"; //------ function setComma(mystr) { if (mystr.length>3) { mystr = arguments.callee(mystr.substr(0, -3))+","+mystr.substr(-3); } return mystr; } //------ // キー監視用のインスタンスオブジェクトを作成 myKey = new Object(); // キーを押したときの動作定義 myKey.onKeyUp = function() { // 「a」も「b」も空白でなければ if (a.text != "" && b.text != "") { c.text = setComma(String(parseInt(a.text, 10)+parseInt(b.text, 10))); } }; // キー監視用のインスタンスをキークラスのリスナーに登録 Key.addListener(myKey); ------------------------------------------- Flashドキュメンテーション onKeyUp (Key.onKeyUp イベントリスナー) http://livedocs.adobe.com/flash/8_jp/main/00002314.html

noname#223882
質問者

補足

ありがとうございます。 解決できました!! ちなみに、a・bのテキストをカンマ表記にすることは可能なのでしょうか?

関連するQ&A

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

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

  • 足し算引き算の教え方

    来年小学生になります。 ダイレクトメールの中のお試しの学習をやったら面白いらしく、もっとやりたいと言うので本屋さんで何冊か買ってきました。 最初に買った3冊は、数字簡単な計算、知恵、言葉です。 これはやり終えました。 次に買ったのは七田式というのです。 これで引き算が出てきたのですが、どうも分からないようです。 今の時代、どういうふうに足し算引き算を教えているのか分からないので、 変なふうに教えて入学してから躓きの元になっても困るなと悩みだしました。 足し算は、例えば5+3なら5を頭の中に入れて、6,7,8、と指で3こ数えて8を出す・・・ 今は指を使わなくても、頭の中で数えられますが、考え方は同じです。 これも正しいのかわかりません。 引き算にいたっては、どう教えていいのか分かりません。 今は、7は4と□という問題があり、7-4=□という問題があります。 たしざんと同じく、4を頭に入れて、5,6,7だから3と言う考え方ですが、何か無理がありそうな気がします。 どんなふうに教えたらよいか。また、よい問題集などありましたら教えてください。 せっかく本人がやる気があり、楽しみに毎日1ページやっているので続けさせたほうがいいと思うのです。 よろしくお願いします

  • 「Suzuka」のアクションスクリプト

    フリーのFlash作成ソフト、「Suzuka」を使用してFlashをつくっているのですが、アクションスクリプトの命令の言語がさっぱりわかりません。 スクリプト(クリックアクション)となっている所に、スクリプト編集があるのですが、もともと、アクションスクリプトの知識は皆無で、手も足も出ません。 今回は、Flashでテキストだけの物語を作ろうとしているので、 せめて、 「クリックして、次のテキストを表示する」 ことをやりたいのです。 これは、テキストエフェクトでは出来ませんでした。 やりかたがわかる人はどうか、教えてください。 よろしくお願いします。

  • FLASHアクションスクリプトに注釈文

    Windows2000 FLASH MX のアクションスクリプトを勉強はじめました。 色々のサンプルを参考にして理解できたことをアクションスクリプトの記述の中に注釈文として残しておきたいのですが、注釈文の記述の方法がわかりません。 文頭に ! や ’や ”をつけてみましたがエラーになります。 それともFLASHのエディタではAccessVBAやHTMLタグのように記述できないのでしょうか。

  • 大人ですが足し算引き算が苦手です

    もう大人ですが、足し算引き算が苦手です。 一桁の計算も間違えることあり、足し算引き算は指を使わないとできないです。 暗算は全くといってできません。 計算苦手なので、物の数を数えるのも苦手です。 どのようにしたら、暗算苦手や数を数えるの苦手克服できるでしょうか? 頭の中に数字を記憶するのも苦手な方です。

  • FLASH 4 アクションスクリプトについて

    FLASH 4 を使ってジグソーパズルを作る事になったのですが、 アクションスクリプトが分かりません。 FLASHを使ったジグソーパズルのアクションスクリプトのサンプルが載ったサイトや、書籍って誰か教えていただけないですか? 時間がなくて大変困ってます。 お願いします。

    • 締切済み
    • CSS
  • 繰り上がりのある足し算・繰下がりのある引き算のあるサイト

    小学2年の息子は、算数の筆算が面倒で嫌いです。 筆算の仕方は、理解しているようです。 見ていると、足し算・引き算の計算がパッとできず、 それで、ドリルなどをするのが、イヤみたいです。 パソコンを触るのは、好きなので、足し算・引き算の問題があり、答えを入力するとピンポーン!と鳴ったりゲーム感覚で、楽しく算数が出来そうな、サイトがあったら、教えて下さい。

  • 【Flash】アクションスクリプトの表示階層について

    こんにちは。 大変初歩的な質問かと思いますが、アクションスクリプトと、他シンボル(画像やスプライト等)の表示階層の件で教えてください。 使用ソフトは『suzuka』、OSは『WindowsXP』です。 簡単なFlashを作成したことはありますが、アクションスクリプトは初めて使用します。 下記のサイトを参考に、雪を降らせるFlashを作りました。 http://www.kirupa.com/developer/mx/snow.htm 記述は、数値のみ少し変更しました。 背景として雪を降らせて、その上で他の画像やスプライトが動くFlashにしたいのですが、どうしても雪が最前面で降ってしまいます。 アクションスクリプトのレイヤー位置を、他シンボルの下に置いても変わりません。 アクションスクリプトとは、レイヤー位置に関わらず、基本的に最前面で作動するものなのでしょうか? どうすれば、他シンボルの背後でアクションスクリプトが作動しますか? 恐れ入りますが、教えてください。

    • ベストアンサー
    • Flash
  • FLASHのアクションスクリプトについて

    FLASHのアクションスクリプトを勉強したいのですが、 何かよい本やWebサイトはありますでしょうか。 (日本語のものがよいです) どうか教えてください、よろしくお願いいたします。

  • 足し算・引き算・不等号ナンプレをやっているのですが

    足し算・引き算・不等号ナンプレをやっているのですが難しくて 解けません。誰かわかる方お願いします □  □  □  □ > □ > □  □ 12 -2 6 4 9 □  □  □  □  □ > □ 9 □ 3 □  □  □  □ < □  □ > □ ∧ 5 ∨ ∧ ∧ □  □-4 □  □-2 □ < □  □   ∨ ∧ ∧ -2 □  □  □  □-3 □ > □  □ 4 -2 -1 9 □  □  □  □ > □  □  □ -2 ∨ □ < □  □-3 □  □  □  □ <ルール> ・各列に使われる数は1~7 ・升目の間の正の数は、その数字を挟んでいるマスの和 ・升目の間の負の数は、その数字を挟んでいるマスの差 ・不等号

専門家に質問してみよう