回答編集履歴
1
具体策の提示
answer
CHANGED
@@ -8,4 +8,32 @@
|
|
8
8
|
}
|
9
9
|
```
|
10
10
|
・音楽をセットするprivateメソッドのMediaPlayerをどこでも実行していない
|
11
|
-
・`getContext()`メソッドをこのクラスでオーバーライドしており、`null`を返している
|
11
|
+
・`getContext()`メソッドをこのクラスでオーバーライドしており、`null`を返している
|
12
|
+
---
|
13
|
+
|
14
|
+
追記
|
15
|
+
URLを教えていただきありがとうございます。
|
16
|
+
ゲーム状態を司っているクラスというわけですね。
|
17
|
+
でしたら、これを呼び出すSurfaceView系クラスのコンストラクタで
|
18
|
+
contextを引数に渡してGmaMgrコンストラクタを起動するのはどうでしょう?
|
19
|
+
([このページ](http://dixq.net/Android/s02_03.html)を元に改変します)
|
20
|
+
```lang-java
|
21
|
+
class GameSurfaceView extends SurfaceView implements SurfaceHolder.Callback, Runnable {
|
22
|
+
private GameMgr _gameMgr; //ここではフィールド宣言だけしておく
|
23
|
+
private Thread _thread;
|
24
|
+
|
25
|
+
public GameSurfaceView(Context context) {
|
26
|
+
super(context);
|
27
|
+
getHolder().addCallback(this);
|
28
|
+
_gameMgr = new GmaMgr(context); //Context情報を渡してコンストラクタ起動
|
29
|
+
}
|
30
|
+
//以下略
|
31
|
+
}
|
32
|
+
```
|
33
|
+
GmaMgr側では、コンストラクタをContext型の引数を受け取るように変更し、
|
34
|
+
コンストラクタ内でmp1に音楽をセットし、再生する命令を記述するといいと思います。
|
35
|
+
ただし、`MediaPlayer.create`メソッドの第一引数は`getContext()`ではなく、
|
36
|
+
コンストラクタ起動時に渡したContext型引数にするのを忘れずに。
|
37
|
+
|
38
|
+
それと、前の方も指摘してますが、第二引数が`R.drawable.*`なのがおかしい気がします。
|
39
|
+
drawableは画像を入れるディレクトリを指しているので。
|