2013-02-02 90 views
0

我在我的簡單安卓遊戲中有兩個類:myBaseObject,myMissile ...我想用Mediaplayer添加一個聲音myMissile類。在非活動類中添加mediaplayer

public class myBaseObject { 
    MediaPlayer shoot; 
    Context context; 

    // ... 

    public void myShoot() 
    { 
     shoot = MediaPlayer.create(context, R.raw.laser_effect); 
     shoot.setVolume(100,100);  
     shoot.start(); 
    } 
} 


// ....... 

public class myMissile extends myBaseObject { 


    public Missile(Bitmap bitmap, float x, float y, double velocity, 
     double direction) { 

     //... 

     myShoot(); 
    } 

} 

與活動課開始比賽後,我看到一個NullPointerException異常的媒體播放器..和遊戲崩潰...我怎麼能解決這個問題? ı嘗試了很多方法..但我無法解決..

這是我的LogCat 02-02 12:37:43.496:E/AndroidRuntime(15009):在com.mycorp.myapp.myMissile。(myMissile。的java:41)

12月2日至2日:37:43.496:E/AndroidRuntime(15009):在com.mycorp.myapp.MissileHandler.update(MissileHandler.java:75)

12月2日至2日: 37/43.496:E/AndroidRuntime(15009):at com.mycorp.myapp.GameEngine.update(GameEngine.java:159)

02-02 12:37:43.496:E/AndroidRuntime(15009):at com .mycorp.myapp.GameThread.run(GameThread.java:51)

02-02 12:38:32.811:I/Process(15009):發送信號。 PID:15009 SIG:9

+0

包含在你的問題你的logcat –

+0

你不要在非活性類獲取上下文 – Deepzz

回答

0

根據你的問題,清楚你沒有通過你的活動上下文。那爲什麼它給你nullpointer異常。

修改代碼就像beloe可以幫助你

public class myBaseObject { 
    MediaPlayer shoot; 
    Context context; 

    public void myShoot(Context ctx){ 
      this.context = ctx; 
      shoot = MediaPlayer.create(context, R.raw.laser_effect); 

      shoot.setVolume(100,100); 

      shoot.start(); 

      } 
} 

public class myMissile extends myBaseObject { 

//Context ctx 
    public Missile(Bitmap bitmap, float x, float y, double velocity, 
    double direction) { 
. 
. 
. 


    myShoot(this); 

    } 
+0

感謝您的幫助..但它並沒有解決..這是我的logcat 02-02 12:37:43.496:E/AndroidRuntime(15009):\t at com.mycorp.myapp.myMissile。 (myMissile.java:41) 12月2日至2日:37:43.496:E/AndroidRuntime(15009):\t在com.mycorp.myapp.MissileHandler.update(MissileHandler.java:75) 12月2日至2日:37:43.496:E/AndroidRuntime(15009):\t在com.mycorp.myapp.GameEngine.update(GameEngine.java:159) 12月2日至二日:37:43.496:E/AndroidRuntime(15009):\t在com.mycorp.myapp.GameThread.run(GameThread.java:51) 02-02 12:38:32.811:I/Process(15009):發送信號。 PID:15009 SIG:9 – futuristixa