我正在尝试为游戏创建音效。但当音效开始播放时,使用MediaPlayer会让游戏慢一秒钟。如果我用了很多音效,游戏真的很难玩。我想我的意识有问题。
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
// ...
if(somethingHappened) {
final MediaPlayer mySound = MediaPlayer.create(getContext(), R.raw.sound1);
mySound.start();
//...
}
//...
}
使用短mp3文件
尝试清理mySound:
public class MyService extends Service {
MediaPlayer mySound;
// ...
@Override
public void onDestroy() {
if (mySound != null) mySound.release();
}
}
有关更多详细信息:http://developer.android.com/guide/topics/media/mediaplayer.html
希望得到帮助!
最好将媒体播放器声明为字段,并在onCreate()中而不是在onDraw()中只创建一次。现在,每次调用onDraw()(通常是很多)时,您都会创建一个新的媒体播放器,这会占用资源。如果不需要的话,也可以使用mySound.pause(),就像Mounir说的那样,当你想杀死它时,可以使用mySound.release()。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
...
final MediaPlayer mySound = MediaPlayer.create(getContext(),R.raw.sound1);
...
}
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if(somethingHappened) {
mySound.start();
// might also want to call mySound.stop() at some point too
}
protected void onPause(){
super.onPause();
mySound.pause();
}
protected void onDestroy(){
super.onDestroy();
mySound.release();
}