回答編集履歴

1

具体策の提示

2015/02/19 09:08

投稿

swordone
swordone

スコア20651

test CHANGED
@@ -19,3 +19,59 @@
19
19
  ・音楽をセットするprivateメソッドのMediaPlayerをどこでも実行していない
20
20
 
21
21
  ・`getContext()`メソッドをこのクラスでオーバーライドしており、`null`を返している
22
+
23
+ ---
24
+
25
+
26
+
27
+ 追記
28
+
29
+ URLを教えていただきありがとうございます。
30
+
31
+ ゲーム状態を司っているクラスというわけですね。
32
+
33
+ でしたら、これを呼び出すSurfaceView系クラスのコンストラクタで
34
+
35
+ contextを引数に渡してGmaMgrコンストラクタを起動するのはどうでしょう?
36
+
37
+ ([このページ](http://dixq.net/Android/s02_03.html)を元に改変します)
38
+
39
+ ```lang-java
40
+
41
+ class GameSurfaceView extends SurfaceView implements SurfaceHolder.Callback, Runnable {
42
+
43
+ private GameMgr _gameMgr; //ここではフィールド宣言だけしておく
44
+
45
+ private Thread _thread;
46
+
47
+
48
+
49
+ public GameSurfaceView(Context context) {
50
+
51
+ super(context);
52
+
53
+ getHolder().addCallback(this);
54
+
55
+ _gameMgr = new GmaMgr(context); //Context情報を渡してコンストラクタ起動
56
+
57
+ }
58
+
59
+ //以下略
60
+
61
+ }
62
+
63
+ ```
64
+
65
+ GmaMgr側では、コンストラクタをContext型の引数を受け取るように変更し、
66
+
67
+ コンストラクタ内でmp1に音楽をセットし、再生する命令を記述するといいと思います。
68
+
69
+ ただし、`MediaPlayer.create`メソッドの第一引数は`getContext()`ではなく、
70
+
71
+ コンストラクタ起動時に渡したContext型引数にするのを忘れずに。
72
+
73
+
74
+
75
+ それと、前の方も指摘してますが、第二引数が`R.drawable.*`なのがおかしい気がします。
76
+
77
+ drawableは画像を入れるディレクトリを指しているので。