2012/01/31(火) [n年前の日記]
#1 [processing] Processingでexportしたアレコレがおかしい
先日、
_Processingで作成したストップウォッチ
だけど。CPU Atom N270(1.6GHz)のネットブック、Lenovo IdeaPad S10-2 で動かしてみたところ、動作が怪しいことに気付いた。
何にせよ、Processingのmillis()がフレームレートと関連した値を返してくるあたり、Processingはあらゆるステータスを表示フレームレートに基づいて算出・記憶・参照させているような気がしてきた。キーの入力も、時間の測定も、フレームレートに支配されている予感。自信はないけど。
解決策がないか調べているうちに、Processing は Java の System.nanoTime() が使えることを知った。これはナノ秒を測定できるメソッド?で、Java5からサポートされている。ひとまずソレを使って時間を取得するように修正した。
修正版を IdeaPad S10-2上で動かしてみた。相変わらずフレームレートはおかしいが、時間取得は一応正確な模様。手持ちのデジタルストップウォッチと照らし合わせてみたところ、1分程度測定した限りでは、そんなにズレがないように見えた。どうにか解決、したような気がする。たぶん。
- ProcessingからExportしたJAVA Applet版をFirefox上で動かすと、実フレームレートが、本来設定されているフレームレートより多くなる。24FPSで回るはずが、26〜28FPSで回ってしまう。
- ProcessingからExportしたexeファイルを動かすと、JAVA Applet版と同様に、実フレームレートが高くなる。
- 上記2つの版は、時間が正確に測れない。フレームレートが高くなるせいか、millis() によるミリ秒取得が正確ではないようで、本来6秒程度の時間も7〜8秒として返ってくる。
- Processing上でCtrl+Rを押して実行した分には、フレームレートは正常。
何にせよ、Processingのmillis()がフレームレートと関連した値を返してくるあたり、Processingはあらゆるステータスを表示フレームレートに基づいて算出・記憶・参照させているような気がしてきた。キーの入力も、時間の測定も、フレームレートに支配されている予感。自信はないけど。
解決策がないか調べているうちに、Processing は Java の System.nanoTime() が使えることを知った。これはナノ秒を測定できるメソッド?で、Java5からサポートされている。ひとまずソレを使って時間を取得するように修正した。
修正版を IdeaPad S10-2上で動かしてみた。相変わらずフレームレートはおかしいが、時間取得は一応正確な模様。手持ちのデジタルストップウォッチと照らし合わせてみたところ、1分程度測定した限りでは、そんなにズレがないように見えた。どうにか解決、したような気がする。たぶん。
[ ツッコむ ]
以上です。