Java 计算点击次数的最佳方法是什么?并根据相应的点击次数播放声音
我有一个名为Gun的ImageView,如果我点击它,它将播放名为gunShot的可绘制动画 所以我声明了一个intJava 计算点击次数的最佳方法是什么?并根据相应的点击次数播放声音,java,android,eclipse,Java,Android,Eclipse,我有一个名为Gun的ImageView,如果我点击它,它将播放名为gunShot的可绘制动画 所以我声明了一个int int gunCount = 0; 第一次单击“枪”时,它将播放soundReload并将枪数设置为1,因此它将不再播放soundReload 然后点击一次,它会播放soundA,点击两次,它会播放soundB,三次,soundC 所以每次我点击它,它都会启动一个名为gunThread的线程,这个线程会检查点击次数并计数,它会根据点击次数播放声音,然后它会将int guntco
int gunCount = 0;
第一次单击“枪”时,它将播放soundReload并将枪数设置为1,因此它将不再播放soundReload
然后点击一次,它会播放soundA,点击两次,它会播放soundB,三次,soundC
所以每次我点击它,它都会启动一个名为gunThread的线程,这个线程会检查点击次数并计数,它会根据点击次数播放声音,然后它会将int guntcount重置为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;
}
}
}
};
那么这就是onClick
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();
}
}
});
关键是,如果你同时点击它两次,它就会播放soundB
单击三次,它将播放soundC
点击一下,soundA就会播放
第一次单击将是soundReload
我设置了一个线程,让它等待用户输入sleep2000中的枪械数量
有没有更好的办法?请告诉我,这似乎不太管用。
谢谢
以下是编辑:
我插入最后一个线程playSound=new Threadnew 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();
}
顺便说一句,我现在想到了,你可以用Handler来处理这个问题。每次你点击,你都可以延迟播放声音任务,比如2000毫秒。每次你再次点击,你就删除回调并再次延迟播放。这样你就可以计算你想不想点击的次数,并在最后2秒延迟后播放。你有没有改变使用处理程序更新代码?如果这样做了,请尝试在onClick方法中记录代码并打印clickCount,这样您就可以看到您有多少clickCount,您可能会错过延迟,并且当clickCount为2时它正在播放声音。顺便说一下,播放声音时需要将clickCount设置为0。将变量设为static和global它会解决你的问题静态整数枪数;我怎么做?为什么?
private void CountDown() {
CountDownTimer timer = new CountDownTimer(3000,1000) {
@Override
public void onTick(long millisUntilFinished) {
}
@Override
public void onFinish() {
}
}.start();
}