SmartWatch MN2用の迷路ゲームDotMazeを作った
慣れないAndroidのプログラミングに苦労したw
特にゲームとして動かすときのループ処理がわからなかった。
アプリを作ってテストすると、迷路が10秒ごとに変化した。
単純なwhileのループだと、アプリを動かして10秒ごとに勝手にリフレッシュされる。
SmartExtension SDKに含まれるSampleWidget.javaに10秒ごとにリフレッシュするコードがあったので、SmartWatchのプログラムがこのリフレッシュを制御していると思っていた。
しかし調べていくとAndroidがリフレッシュを発行しているらしい。
このリフレッシュを解決しないことには先に進めない。
改めてSDKのコードを読んでわかった。
SampleControlSmartWatch.javaで解決を見出す。
SampleControlSmartWatch.javaでは
- クラスにimplements Runnableをつける
- ループに相当する部分はpostDelayedにより遅延させて再実行する
で、マシンパワーをフルに使ったwhileループを避けている。
一方で、PlayStation Mobile SDKの説明を思い出す。
こちらは単純なwhileループが使える。
描画の間隔約16.7ms(=1秒/60フレーム)ごとにプロセスが繰り返されるため、むやみなループは行われない。
苦労したけど、いい勉強になった。
2013/07/06 17:45