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
タグ