我有一个名为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++;
}
});