- ベストアンサー
Math.floorがうまく動かない?小数点以下まで表示されてしまう
- Flase8初心者がNowLoading画面に%を表示しようとしたが、Math.floorがうまく動かないため、小数点以下まで表示されてしまう。
- 質問者はスプリクトを使用して、ローディングの進捗状況を表示しようとしているが、Math.floorが正しく動いていないため、小数点以下まで表示されてしまう。
- 間違いやエラーはないか確認してほしい。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
よくわかりません。 その,Mafh.floor に "関しては" 正常に動作します。 その,スクリプトを書かれた場所が,_root のタイムラインなのか ムービークリップのタイムラインなのかは,よくわかりませんが, そのスクリプトを書かれた階層内に 「Parcent_txt」という "インスタンス名" のダイナミックテキストを用意すれば, ちゃんと整数が表示されます。 「ムービープレビュー」で,プレビューされている画面から 「表示」→「ダウンロードシュミレート」で状況を色々変えて何度も実験しました。 ムービーは正常に動作しないかもしれませんが, やはり Mafh.floor に "関しては" 正常に動作します。 「Parcent_txt」という "インスタンス名" のダイナミックテキストを, スクリプトを書いた階層に置いていますか? 「Parcent」という "変数名" のダイナミックテキストを,置いた場合は, 当然,小数点以下は切り捨てられません。 ------------------------------------------ 以下は Mafh.floor に関してではありませんが, スクリプトは次のように訂正,または付け加えをした方が良いとは思います(思うだけです)。 // とりあえずストップ _root.stop(); this.onEnterFrame = function() { Parcent = (_root.getBytesLoaded()/_root.getBytesTotal()*100); Parcent_txt.text = Math.floor(Parcent); if (Parcent>=100) { // ↓変更 _root.gotoAndPlay(3); // ↓ _root のタイムラインの場合は付け加え delete (this.onEnterFrame); } }; play(3) のパラメータ 3 は,何の意味も持たないので,無視されます。 play(3) ではなく,gotoAndPlay(3); ではないでしょうか。 また, スクリプトを書かれた場所がよくわかりませんが, もし _root のタイムラインでしたら, delete (this.onEnterFrame); で その onEnterFrame は消しておいた方が無駄なCPUを使いません。 ムービークリップのタイムラインで,なおかつそのムービークリップはロード完了後すぐにステージから表示されなくなるのでしたら,この delete (this.onEnterFrame); は不要です。
お礼
詳しく説明いただき、ありがとうございます。 おかげで原因がわかりました。 原因はインスタンス名が書かれていなかったためでした。 初歩的なミスでした…すみません。 スプリクトのご指摘もとても参考になりました。 本当にありがとうございました。