Forums: Forum des développeurs (Thread #48751)

Processing4.2の不具合(ウィンドウサイズを変更するとおかしくなる) (2023-03-06 23:05 by tatsuva #94439)

おかしくなる:無反応になる(キーボード入力,マウス入力に反応しない)が,Processing側で「停止」ボタンを押せばプログラムは終了するので単純なフリーズとは異なる.

ウィンドウサイズを変更するのは,measureとvisualizeのみ(mergeは変更しない). Processing3から利用可能になったsurfaceを用いて,以下のようにウィンドウサイズを変更している.

surface.setSize(img.width, img.height + 40);

デバッグモードでステップ実行を行うと,上記無反応になる現象は発生しない.ブレークポイントを仕掛けて「続行」で飛ばすと発生する.

surface.setSize(img.width, img.height + 40); surface.setVisible(true); // Processing4.2でリサイズ後にキー操作その他を受け付けなくなる障害に対する無根拠な対策(効果あり)

上記のように,setSize()した後に,(既にvisibleなのだが)setVisible(true)することで本異常現象は回避できる.ただし根本的な問題解決ではない.

 以下のページ("surfaceを置き換える関数")で示されているように,windowResize()をProcessing4では使用するべきかも知れないが,現時点では互換性の為にsurfaceを利用している.  https://qiita.com/TN8001/items/6f8906f3fd6b2c235998

 今後は,surfaceではなく,Processingのバージョンに基づいて,windowResize()を使用するように変更するべきかも知れない.