回答編集履歴
1
具体策の提示
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は画像を入れるディレクトリを指しているので。
|