是的,我在发布之前确实搜索了答案。 :)
制作棋盘游戏,每件作品都会骰子,然后在正方形上一步一步地移动。想要用短促的哔声跟随每一步。添加方法“beep();”并将其放置在处理器中,以便在屏幕上移动片段的位置。
当我添加beep();游戏工作几个动作,然后只是停止,没有任何报告或错误消息。视图在屏幕上关闭,对话框只是说“不幸的是,BoardLS已停止[确定]”,没有其他事情发生。
当我删除beep();游戏运行正常。
如果有人知道哔哔声如何让游戏崩溃,以及如何避免它,请告诉我尽可能简单。感谢。
以下是我发出哔哔声的方式:
private void beep() {
ToneGenerator beepSound = new ToneGenerator(AudioManager.STREAM_MUSIC, 60);
beepSound.startTone(ToneGenerator.TONE_PROP_BEEP, 75);
} // Short sound
我称之为:
private final Handler playMove = new Handler() {
@Override
public void handleMessage(Message playMsg) {
beep();
player.setX(pcX[playPos]);
player.setY(pcY[playPos]);
}
}; // Put Player piece to new coordinates
playPos是该片段的正方形数字,
pcX和pcY是屏幕坐标为正方形的数组。
处理程序在MainActivity中,
并使用playMove.sendEmptyMessage(0)从AsyncTask调用;
AsyncTask直接使用全局变量,这里没有任何问题。
答案 0 :(得分:0)
只需使用ToneGenerator
方法发布已创建的release()
个对象。
private void beep() {
ToneGenerator beepSound = new ToneGenerator(AudioManager.STREAM_MUSIC, 60);
beepSound.startTone(ToneGenerator.TONE_PROP_BEEP, 75);
beepSound.release();
}