统计点击次数的最佳方式是什么?并根据相应的点击次数播放声音



我有一个名为Gun的ImageView,如果我点击它,它将播放名为gunShot的可绘制动画。

所以我声明了一个int

int gunCount = 0;

第一次单击"Gun"时,它将播放soundReload并将gunCount设置为1,因此它将不再播放soundReload。

然后点击一次,它就会播放声音A,点击两次,它会播放声音B,三次,声音C。

所以每次我点击它,它都会启动一个名为gunThread的线程,这个线程会检查点击次数并计数,它会根据点击次数播放声音,之后它会将int gunCount重置为0,然后再次开始计数。

这是我的代码:

首先我声明了我的线程

final Thread Slash = new Thread(){
public void run(){
try{
sleep(2000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
if (gunCount == 3){
gunShot.start();
soundA.start();
gunCount = 1;
} else if (gunCount == 4){
gunShot.start();
soundB.start();
gunCount = 1;
} else if (gunCount == 5){
gunShot.start();
soundC.start();
gunCount = 1;
}       
}
}       
};    

这就是点击

Gun.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(gunThread.isAlive()){
gunThread.stop();
}
if(gunShot.isRunning()){
gunShot.stop();
}
if(gunCount == 0){
gunShot.start();
soundReload.start();
gunCount = 1;
} 
else if(gunCount >= 1){
sengokuState += 1;
gunShot.start();
gunThread.start();
}
}
});

关键是,如果你模拟地点击它两次,它就会播放声音B点击三次,就会播放声音C点击一次,soundA就会播放

第一次点击将是soundReload

我设置了一个线程,这样它就可以等待用户输入睡眠中有多少枪计数(2000)。

有更好的方法吗?请告诉我,这似乎不太好用。谢谢

编辑如下:我插入最后一个线程播放声音=新线程(new Runnable(){

@Override
public void run() {
//play the sound here with respect to clickCount
if(clickCount == 2){
soundA.start();
clickCount = 2;
}
else if (clickCount == 3){
soundB.start();
clickCount = 2;
}
else if (clickCount == 4){
soundC.start();
clickCount = 2;
}
}
});    

clickCount==3和clickCount===4不起作用,任何线索,无论如何,谢谢。

您应该考虑其他事情,而不是线程尝试此代码

private void CountDown() {
CountDownTimer timer = new CountDownTimer(3000,1000) {
@Override
public void onTick(long millisUntilFinished) {

}
@Override
public void onFinish() {

}
}.start();
}

在开始时有一个延迟似乎是一个很好的方法。如果不是这样,我就不会有问题用我的EarPods传递到下一首歌:)

编辑:

Handler handler = new Handler();
Thread playSound = new Thread(new Runnable() {
@Override
public void run() {
//play the sound here with respect to clickCount
}
});
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
handler.removeCallbacks(playSound);
handler.postDelayed(playSound, 2000);
clickCount++;
}
});

最新更新