◆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秒に設定する例:
1 2 3 4 5 6 7 8 9 10 |
public void setup() { frameRate( 60 ); } public void draw() { float fps; fps = frameRate; println( "loop=" + fps ); } |
setup()関数の中で、1/60秒間隔で draw()関数を呼び出すように指定しています。
実際にどのような間隔で呼び出されているかを、draw()関数の中で frameRate; で取得し、デバック表示しています。
本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。