Flash8のAction ScriptでNaNという文字が表示される理由と解決方法

このQ&Aのポイント
  • Flash8のAction Scriptで計算をする際、適切な数字が表示されずにNaN(Not a Number)と表示される場合があります。
  • この現象は、Flash8のバージョンの設定によって起きることがあります。Flash8のバージョンをFlash7に設定することで正しい数字が表示される場合があります。
  • この問題の原因は数字が文字として認識されてしまっていることにあります。解決策としては、計算する際に適切なデータ型を指定することが重要です。具体的な解決方法については詳細なコードや具体的な計算内容が必要ですので、詳細を教えていただければと思います。
回答を見る
  • ベストアンサー

Flash8のAction Scriptの計算でNaNとでます。

はじめまして。 まだ、Flashの初心者で『Action Script』について、余りよく分かっていません。 そのため、初歩的な質問だとは思いますがどうぞ宜しくお願いします。 まず『Flash8』でちょっとした計算をするため、 on (release) { a = b / c; } とうものを作りました。 ただ、ムービープレビューをして、『テキスト入力』に適当な数字をいれると、『ダイナミックテキスト』に『NaN』という文字が出ます。 しかし、パブリッシュ設定で、バージョンをFlash7(2004)の設定にすると、ちゃんとした数字が出ます。 また『flash7』で、同じものを作り『flash8』でプレビューするとちゃんとした答えが出ます。 『flash8』で『バージョンflash7』でパブリッシュしたものも『flash7』でみられます。 flash8のver.flash8でパブリッシュ→×(7・8どちらでも視聴不可) flash8のver.flass7でパブリッシュ→○(7・8どちらでも視聴可) flash7のver.flass7でパブリッシュ→○(7・8どちらでも視聴可) 数字を文字として認識してしまっているのでは?と思うのですが、解決方も何が原因なのかよく分からないので、どうぞ宜しくお願いいたします。

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

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

現象は自体の細かい点は, 実際に同じファイルを見ることができないので何ともわかりませんが, 『テキスト入力』 のプロパティ(プロパティインスペクタ)で, 真ん中の下のほうにある,  A [単一行   v] Ab  < > □ となっている部分の < > ボタン,つまり「テキストをHTMLとしてレンダリング」ボタンが, 押されている状態になっているのかもしれません。 その場合,テキストは文字列どころかタグ付きの変な値になるため, 「NaN(非数)」になってしまいます。 「テキストをHTMLとしてレンダリング」ボタンが押されていないかどうかをチェックしてみて, 押されていないようでしたら, on (release) { a = Number(b)/Number(c); } のように, Number関数で,文字列を数値に変換するのが, 昔からのやりかたです。 これで, うまく行かないようでしたら on (release) { a = Number(b)/Number(c); trace(a); trace(b); trace(c); } としてみて, 「ムービープレビュー」で実際にテキストフィールドには何が入っているのか確かめてみるのが良いと思います。 ======================= しかし, テキストフィールドにはそもそも変数名を付けないようにして, インスタンス名を付けるというのが Flash MX 以降,正式なやりかたです。 Flashドキュメンテーション (ヘルプです) テキストフィールドのインスタンス名と変数名について http://livedocs.adobe.com/flash/8_jp/main/00001418.html  ~引用~ > プロパティインスペクタの [変数] テキストボックスで、 > 変数名をダイナミックテキストフィールドや > テキスト入力フィールドに割り当てることができます。 > これによって、変数に値を割り当てることができます。 > これは、旧バージョンの Flash Player (Flash Player 4 など) > 用のアプリケーションを作成するときに使用する可能性のある > 非推奨の機能です。 > それよりも新しいプレーヤーを対象にするときは、 > インスタンス名と ActionScript を使用して、 > テキストフィールドのテキストをターゲットにする必要があります。 ですから本当は, a,b,c は変数名として付けるのではなく, テキストフィールドにインスタンス名として付けて, on (release) { a.text = Number(b.text)/Number(c.text); } とするのが, 最も正式で最も無難な方法です。

mamiya009
質問者

お礼

sassakun様 お忙しい中、的確なご指示ありがとうございました。 テキストフィールドに変数名を付けない等、とても詳しく、また、初心者の私にもとても理解しやすいご解説を頂きありがとうございます。 早速、行ってみました。 はじめ、インスタンス名もa.textなどtextをつけ、うまくいかなかったのですが、インスタンス名からtextを取ってみたところ、ご指摘の通り、うまく計算が出来ました。 心より感謝しております。 どうもありがとうございました。 mamiya009

関連するQ&A

  • アクションスクリプト!

    flashで作ったトップページでムービーを再生させているのですが、flash上で作ったボタンをクリックするとコンテンツページ(htmlファイル)に飛ぶようにスクリプトを以下のように設定しました。 on (release) { getURL("map.html"); } ところがこれだけでは、再生中のムービーが最後まで再生しおわらないとページに飛んでくれません。本で探したのですがわからなくて困っています。ボタンをクリックしたら再生中のムービーを無視してすぐに飛ぶようにしたいです。どなたか解る方教えて頂けないでしょうか?

  • Flash待ち受け作成時の動作確認の仕方について。

    携帯の待受けFlashをFlash8で作成し、Flash8の画面で「制御」から「ムービープレビュー」ここにて動作確認をしようと試みたのですが、FlashLite2.0がインストールされてないとコメントがでたので、AdbeのHPからダウンロードしようとサイト内を探したのですが、FlashLite2.0のアップデートのDL、というリンクしかなく、それをDLしFlash8のムービープレビューを起動してみました。その後Flash Lite 2.0の設定画面が開き、その設定もボタンがアクティブにならず、先にまったく進めないのです。FlashLite2.0を入れるまではPC用のFlashPlayerでプレビューできていたのですが、今はFlashLite2.0の設定画面がでてしまい、プレビュー全くできない状態になりました。Flash Lite 2.0のアップデートをDLしたのが間違いだったのでしょうか。Flash Lite 2.0そのもののDLページはどこかにありますか?何が間違っているかも分からず、アドバイスお願いします。

  • Flash8のユニコードについて。(mySQLとの連携)

    Flash8とPHPとmysqlの連携でアプリケーションを作っています。 mysqlで作ったデータベースからphpで日本語のテキストを読み込み、ActionScriptで表示させたいのですが、ユニコード(?)が違うらしく文字化けが起こってしまいます。(ムービープレビューの際) mysqlのユニコードShift-JISにしています。 Flashのユニコードを変更することはできるのでしょうか? また、文字化け解消のアドバイスなどあればお願いします。

    • ベストアンサー
    • Flash
  • Visual Basic Scriptを使ったFlashの再生

    パソコン初心者です。教えて下さい。第4の携帯電話会社「イー・モバイル」の携帯情報端末「EM・ONE」には「Opera Mobile」と「Internet Explorer Mobile」の二つのブラウザが搭載されています。双方ともVer.7のFlash Playerがプラグインとして入っています。ところが、Operaのほうは殆んどのFlashを再生するのに、「IEモバイル」では殆んどのFlashを再生できません。この事をメーカーのSHARPにメールで問い合わせたら以下のような回答が届きました。 1)Flashについて Internet Explorer Mobileでは、Flash製作時のプログラムの 作り方によってはそのFlashコンテンツが再生できないため、 プログラム側で予め「Internet Explorerでは動きません」という 宣言をすることがございます。 これが、「マニュアルに記載のFlashコンテンツの再生は行われない ように設定している場合」に該当します。 これはFlashのバージョンによるものではなく、プログラムの 作り方によるものです。 (具体的に申し上げますとVisual Basic Scriptを使ったFlashはInternet Explorer Mobileで動作しません。 これはFlashのバージョンによるものではなく、プログラムの 作り方によるものです。 (具体的に申し上げますとVisual Basic Scriptを使ったFlashはInternet Explorer Mobileで動作しません) 例えば下記HPはこれに該当します。 よみうりランド http://www.yomiuriland.co.jp/ インフォシーク http://www.infoseek.co.jp/ 上記の内容ですが、これって本当のことでしょうか?

  • Mac OS10.6.2で「Flash Basic8」を使っていますが

    Mac OS10.6.2で「Flash Basic8」を使っていますが、パブリッシュ設定にてQuickTime(.mov)にチェックを入れると「インストールされているQuickTimeのバージョンでは、Macromedia Flash 5以前のバージョンでパブリッシュする必要があります。[パブリッシュ設定]にある[Flash]タブの[バージョン]で [Flash Player 5]を選択してください。」と出ます。 そして警告どおりに[Flash]タブの[バージョン]を[Flash Player 5 ] にしてパブリッシュし直しても、「パブリッシュ中」の進捗バーが9割くらいまで進んだ所で止まり、上記の警告と全く同じ文章が出るのです。Flash Player 5 にしてるのにです。 パブリッシュ設定の「形式」のチェックをFlash(.swf)とHTML(.html)の2つだけなら普通にパブリッシュできます。 QuickTimeプレーヤーのバージョンは10.0です。 何が原因なのか、教えていただけると助かります。よろしくお願いいたします。

    • ベストアンサー
    • Mac
  • FLASH8でUnicodeを入力すると?が表示されます

    環境:Windows2000、使用ソフト:FLASH8Professional ・新規からテキスト入力フィールドを作り、パブリッシュプレビュー(FLASH)後に出てくるFLASHにJIS補助漢字をIMEパッドから入力すると入力した文字が「?」に変わってしまいます。FLASH8はUnicodeに対応しています。とAdobeのサイトにあったのですが、何か特別な事が必要なのでしょうか?外部テキストを読み込んでいるわけではないのでSystem.useCodepage = trueは必要ではないと思ったのですが間違いなのでしょうか? 色々とサイトを巡ったのですが詳しい解決方法が見つかりませんでした。FLASHソフトを始めて使うので質問の内容がおかしな点があるかもしれませんが、宜しくお願い致します。

  • 「Flash8」のアニメーションの事について(初心者です)

    Flash8で ・テキストをグラフィックでシンボルに変換して ・だんだん色が透明になるようにアルファを設定して、モーショントゥイーンを設定しました タイムライン上でenterキーを押して動きを確かめると確かに、だんだん色が透明になるアニメーションが設定出来ているいることが確認できます。 ただ、パブリッシュプレビューをしたりムービーの書き出しをして動きを確かめるとだんだん色が透明になるアルファが適用されていません。 原因がわからなくて、困っています。 どなたかお分かりになる方がいらっしゃいましたら、ご回答宜しくお願いします<m(__)m>

  • Nexus 7('12)でFlash Player

    Nexus 7(2012/Android 4.1)でFlash Playerをいれてインストールを行うサポート外の方法があり、そのやり方がネットに書いてあったのでそのままの作業をやりましたがFlashが視聴できません。 http://androidlover.net/tablet/nexus7/nexus7-jellybean-install-flash-player.html 最新のFireFox(26.0.1)でFlash動画がでるところに『ご利用の端末は動画視聴の推奨環境を満たしていないため、動画の再生は出来ません。※お客様の端末にはFlashプレイヤーがインストールされていません。云々...』と出てしまいます。 Android の 設定>アプリ>Adobe Flash Player 11.1 がインストールされているのも確認済です。 ちゃんと視聴できる方法はありますか。

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

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

  • FLASHのアクションにつきまして

    こういう事ってあるのでしょうか。 FLASHのボタンアクションの事なのですが、ムービ ーエクスプローラーではそのアクションの内容を見る事 ができるのですが、アクション自体がどこを探しても見 当たらないのです。 ボタンにマウスポインタを持っていくと横に絵が現れて 、離すと引っ込む。そしてボタンをクリックすると他の ページへジャンプする。という仕組みを作ろうとしてボ タンのrollover、rolloutのアクションにreleaseのア クションを追加したいだけなのですが。 ムービーエクスプローラーではアクションの内容が見え ているだけに編集を加えられないのは非常にもどかしい です。 非常に漠然とした質問で申し訳ないのですが、ここをこう してみたらというのがありましたら教えてください。 なお、バージョンはFlash5です。