画面の更新間隔を変更するには

◆PROCESSING 逆引きリファレンス

 カテゴリー:制御系

【解説】
PROCESSINGにはBasicモードとContinuousモードの2つが存在します。
Continuousモードは、setup()関数で初期処理を行い、その後draw()関数が一定間隔で繰り返し呼び出されるモードです。

このdraw()関数を、どのような間隔で呼び出すかをframeRate()命令で変更する事が可能です。

【構文】
frameRate( fps );
frameRate;

【パラメータ】
fps  :  float型: draw()を呼び出す毎秒あたりのフレーム数

【戻り値】
frameRate(fps); の場合は、なし
frameRate; の場合は、float型の「実際の平均フレームレート間隔」が戻される。

【注意】
fpsには0以上でPROCESSINGのfloatが許す正のMAX値( 3.40282347×10の38乗 )までの値が指定できるようですが、普通は 1 から 60 までの範囲から適切な値を与えます。
指定しない場合、fpsのデフォルトは 60(= 1/60秒間隔)になります。

ちなみにPROCESSINGがdraw()関数を呼び出す間隔は厳密なものではありません。また当然ですが、draw()関数の処理が呼び出し間隔以上の処理時間を要した場合、draw()関数はframeRate( fps ) で指定した秒間隔では実行されないことになります。ここは注意ですね。

fps に 0 を与えると、draw()関数を呼びださなくなります。draw()関数を呼び出したくないのであれば、frameRate( 0 ); とするのではなく、noLoop(); 命令を使ったほうが良いでしょう。

fps に負の値を与えると、許容される最大フレーム間隔でdraw()関数を呼びだそうとするようです。ただし、こんな方法は(たぶん)推奨されません。

正規リファレンスでは、frameRate()命令はsetup()関数の中で利用することが推奨されています。

実際にどの程度の間隔でdraw()関数が呼び出されているかを知るには、引数を伴わないframeRate; 命令を用います。ただしframeRate; が戻す値は呼び出し間隔の「平均値」なので、何度か繰り返し取得しないと正確な値に近づきません。

【関連記事】
第3章:改定版-タイトル画面を作成しよう(その2)


●フレームレートを1/60秒に設定する例:

setup()関数の中で、1/60秒間隔で draw()関数を呼び出すように指定しています。
実際にどのような間隔で呼び出されているかを、draw()関数の中で frameRate; で取得し、デバック表示しています。

<出力サンプル>
frameRate

 


PROCESSING逆引きリファレンス一覧 へ戻る

本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)