CLiCkin2DaBeaT (2)
ええと、ONEPASS_MODE とか TWOPASS_MODE って一体何でしょ。
mode 属性
C2B.java で mode 属性に代入してる箇所を確認。M-x occur で調べたら以下。
5 matches for " mode =" in buffer: C2B.java 118: mode = GAME_MODE; 163: mode = ONEPASS_MODE; 259: mode = ONEPASS_MODE; 272: mode = ONEPASS_MODE; 274: mode = TWOPASS_MODE;
ちなみに試しに grep してみた結果が以下。
$ find src |xargs grep ONEPASS src/com/google/clickin2dabeat/C2B.java: public static final int ONEPASS_MODE = 2; src/com/google/clickin2dabeat/C2B.java: if (mode == ONEPASS_MODE) { src/com/google/clickin2dabeat/C2B.java: mode = ONEPASS_MODE; src/com/google/clickin2dabeat/C2B.java: mode = ONEPASS_MODE; src/com/google/clickin2dabeat/C2B.java: mode = ONEPASS_MODE; src/com/google/clickin2dabeat/GameView.java: if (parent.mode == C2B.ONEPASS_MODE) { // Record this point as a target $
.svn はスルー。基本的には C2B のみで mode の変更、という理解で良いのかな。ちなみに TWOPASS_MODE になるのは displayCreateLevelAlert メソドで関連ブロックを以下に引用。
String[] choices = new String[2]; choices[0] = getString(R.string.ONE_PASS); choices[1] = getString(R.string.TWO_PASS); createLevelAlert.setSingleChoiceItems(choices, 0, new OnClickListener() { public void onClick(DialogInterface dialog, int which) { if (which == 0) { mode = ONEPASS_MODE; } else { mode = TWOPASS_MODE; } } });
ええと R.string.*_PASS の定義が以下。
<string name="ONE_PASS">Use 1-pass method to set the beats</string> <string name="TWO_PASS">Use 2-pass method to set the beats (more accurate beat synchronization)</string>
うーん。そろそろ実機で動作を見てみたいんですが。そもそもこの displayCreateLevelAlert の呼び出し元がどこなのか、というと三個所
- runC2B から
- displayCreateLevelAlert で表示される AlertDialog の PositiveButton クリックで busyProcessing が true のケイス
- displayCreateLevelAlert で表示される AlertDialog の NagativeButton クリックで busyProcessing が true のケイス
あら?
やっぱ C2B の処理フローはちゃんと確認しといた方が良いカンジ。ちょっとざっくりまとめとく。
- resetGame で background な VideoView な callback 設定
- OnPreparedListener
- OnErrorListener
- OnCompletionListener
- resetGame から displayStartupMessage メソド呼び出し
このあたり、明日実機で確認してみますorz