• ベストアンサー

fps テキスト入力・またはボタンで変更

今、フラッシュ暗算のコンテンツを作っています。 一つ目のフレームで足す桁数や個数、再生速度を指定したいと思っています。 桁数などは一応指定できたのですが、fpsについてはお手上げでした。 あるHPで、fpsを後から変更する事はできない。という説明を見たのですが、それは、私がやろうとしている事ができないという意味でしょうか?それとも、あるムービーを作っていて、それを後からfps変更すると不具合が生じると言う事なのでしょうか?

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

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

フレームレートは変えられませんよ。 でも,アニメーションを早くしたり遅くしたりする方法は無数にあります。 どういうしくみで,次の暗算問題を出されているのかがよくわかりませんので, 一般的な方法をいくつか書いておきます。 初歩的な物では,             1    5    10    15    20  □レイヤー 筆・・|○   []|○            []|○|  □レイヤー 筆・・|●--------->|●|○        []|  □レイヤー 筆・・|○   []|●/////////[]||○   []| こんなムービーを1つ作って, 内容が全く同じでキーフレームの間隔を短くしただけの             1    5    10    15     □レイヤー 筆・・|○  []|○         []|○|  □レイヤー 筆・・|●------->|●|○     []|  □レイヤー 筆・・|○  []|●///////[]||○ []| こんなムービーを作っておいて, 一つ目のフレームの再生速度を指定で, 「ロースピード」を選択すれば,上の方のムービーをロードする。 「ハイスピード」を選択すれば,下の方のムービーをロードする。 とか 「ロースピード」を選択すれば,上の方のシーンに gotoAndPlay() する。 「ハイスピード」を選択すれば,下の方のシーンに gotoAndPlay() する。 とかそういう方法もあります。 また,たとえば, ステージ上に「hayasa」という変数名のテキスト入力のテキストフィールドと, 「atai」という変数名のダイナミックテキストを置いておいて, タイムラインのフレーム1のスクリプトに ------------------------ //変数の初期値の設定 hayasa = 10; atai = 100; //1フレーム進む時間ごとに以下を実行 this.onEnterFrame = function() { //変数hayasa のエラー処理 if (hayasa<1 || hayasa == "") { hayasa = 1; } //変数hayasa を整数化 hayasa = Math.floor(hayasa); //変数atai への値の加算 atai += hayasa; }; ----------------------- と書くと, テキスト入力のテキストフィールドに書いてある値通りに, 変数atai の値が加算されて行きます。 つまり,変数hayasa を変えることによって, 変数atai の変化する速さを変えられるわけです。 上の状態で, さらに2つの 塗りの ○ (丸) でもステージ上に描いて, 2つともムービークリップにし, 1つには ----------------------------- onClipEvent (enterFrame) { if (this._x>600) { this._x = -10; }else{ this._x += _root.hayasa; } } ----------------------------- もう1つには ----------------------------- onClipEvent (enterFrame) { if (this._x>600) { this._x = -10; } else { this._x += _root.atai/100; } } ----------------------------- と書いておいてパブリッシュ。 テキスト入力のテキストフィールドに書いてある値通りに, ムービークリップの動く速さが変えられます。 つまり,変数hayasa を変えることによって, 色々なものの速さを変えることができます。 慣れてくると, まずフレームレートを途中で変えようとかいう考えはなくなってきます。 フレームレートは変えることができませんが, もし変えられたとしてもアニメーションの品質を保つ上で変えては変えてはならないと思います。 フレームレートなんか変えなくても,いくらでもスピードを変化させることができます。 #1の方の書かれている方法で, スクリプトを実行するタイミングを変えるというのも1つの方法ですし,他にもタイミングを変える方法はたくさんあります。 例えば 複数フレームのムービーを作っておいて, フレーム1のスクリプトに下のように書くと, すごくゆっくりにしかアニメーションは進みません。 --------------------- //とりあえずストップ stop(); //変数count の初期値を設定 count = 0; //1フレーム進む時間ごとに以下を実行 this.onEnterFrame = function() { //変数count を 1ずつ加算 count++; //もし count が 10 で割り切れたら if(count%10 == 0){ //次のフレームへ nextFrame(); } } --------------------- こんなようにして, アニメーションの動きを制御することはできますし, //次のフレームへ nextFrame(); と書いている部分を, 他のスクリプトに変えると,しばらくごとに,書いたスクリプトが実行されるものができます。 if(count%10 == 0) の 10 を他の数に変えれば 他のタイミングで何かが実行されますから, 10 の部分を変数にしておいて可変にすることも可能です。 とにかく, >> 私がやろうとしている事ができないという意味でしょうか? fps を変えなくてもいくらでも方法はあると思います。

7772
質問者

お礼

丁寧な回答ありがとうございます。とても参考になりました。

その他の回答 (1)

  • Mac10
  • ベストアンサー率44% (17/38)
回答No.1

 フレームレート(fps)自体は変更できませんが、setInterval()という関数で、一定間隔ごとに処理を呼び出せるので、fpsを変更するのと同じような処理を行うことができますよ。  引数は1つめがオブジェクト(対象)。  2つ目がメソッド(処理)。  3つめが呼び出す間隔です。

7772
質問者

お礼

早速のご回答ありがとうございました。

関連するQ&A