- ベストアンサー
スクリプトで数字を操作
例えば、プリロード時に進行状況がパーセントで表示されるように 数字が0から100へと徐々に上がって行くようなアクションを 任意の範囲内(秒数やフレーム数)で表現できればと考えています。 ご存知の方おられましたら、ご返答いただけると幸いです。 ※Flashは8Proを使用しております。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
ちょっと(けっこう)誤差が大きいですが, 次のような感じではいかがでしょうか? 任意の階層,任意のフレームに書くスクリプト↓ //////////////////////////////////////////////////////////////// // ---↓手動で作成する場合は以下不要↓--- // この階層にインスタンス名 my_txt のテキストフィールドを作成 var mt:TextField = this.createTextField("my_txt", 0, 10, 20, 50, 22); // my_txt のボーダーを表示させておく mt.border = true; // ---↑手動で作成する場合は以上不要↑--- // 任意の秒数を設定 var byou = 8; // カウント用の変数 cnt の初期化 var cnt:Number = 0; // my_txt に cnt の値を表示 my_txt.text = cnt; // 関数 countUp を byou*1000/100 ミリ秒 ごとに実行 var intID:Number = setInterval(countUp, byou*1000/100); // カウントアップする関数の定義 function countUp():Void { // cnt に 1 を加算 cnt++; // my_txt に cnt の値を表示 my_txt.text = cnt; // もし cnt の値が 100 になれば if (cnt == 100) { // setInterval をクリア clearInterval(intID); } // 即 表示を更新 updateAfterEvent(); } //////////////////////////////////////////////////////////////// setInterval や setTimeout は, 「適当に ○秒間隔で 0→100 をカウント」 という感じで使うには問題ありませんが, 「任意の秒数で 0→100 をカウント」 という感じでシビアに使う場合は誤差が目立ってしまいます。 onEnterFrame などを使うと, 1フレーム進むごとに, 例えばカウントを2つアップするようなことができませんし。 誤差は出ますがなんとかそこは補正していただくなどして, setInterval を使うのが妥当ではないかと思います。
お礼
ご丁寧な解説、ありがとうございます。 これから色々と検証してみます♪