在视觉上,我希望我的应用按以下顺序显示四个Toast:
但是,生成的顺序是:
我的总体目标是拥有一个显示图像并且每3秒钟更换一次的程序。玩家可以按一个按钮,图像会改变1.5秒。因此,有两种方法,一种是使用countdowntimer来改变图像,另一种是使用与imagebutton相对应的onClick方法来改变图像。
我遇到的问题是链接中提供的代码(在onclick方法中调用的方法)应该更改图像,将bool值设置为false,等待1.5秒,然后更改同样的bool值回归真实。
虽然bool值为true,但是应该跳过改变图片的方法,但事实并非如此,我不知道为什么,但我认为这样做有事可做使用我在下面创建的要点中的代码。
所以我遇到的问题是当点击按钮时,图像会按预期更改,但由于第一种方法无法识别播放器的响应因此无法更改图像,因此有时会再次快速更改。 / p>
public void delayedRandomCue(final long a){
didPlayerRespond = true;
createToast("start of delayed RandomCue Method");
randomCue();
Thread delay = new Thread() {
public void run() {
try {
createToast("start of delay");
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}finally {
createToast("end of delay");
didPlayerRespond = false;
}
}
};delay.start();
createToast("end of delayed RandomCue Method");
}
https://gist.github.com/cjayem13/d32446ceb8c6d9626c68#file-easyfragment-Java https://gist.github.com/cjayem13/d32446ceb8c6d9626c68
https://gist.github.com/cjayem13/d0a0b124dfe17666be25#file-easyfragment-Java https://gist.github.com/cjayem13/d0a0b124dfe17666be25
onclick(){
delayedRandomCue(final long a)
}
randomCue();
Thread cueThread = new Thread(){
public void run() {
try {
while (fComm.fragmentGetTimerBool()) {
if(!didPlayerRespond) {
if (decTime > 1000) {
Thread.sleep(decTime);
} else {
Thread.sleep(1000);
}
decTime -= 50;
randomCue();
}
}
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
saveScore();
}
// turn into end of all pics triggers bonus sTimerOn = false; fComm.fragmentScoreResponse(100);
//createToast("Bonus for completing all possible answers");
}
}; cueThread.start();
答案 0 :(得分:2)
public void delayedRandomCue(final long a){
didPlayerRespond = true;
首先发生这种情况
createToast("start of delayed RandomCue Method");
randomCue();
Thread delay = new Thread() {
public void run() {
这种情况在后台异步发生。
try {
createToast("start of delay");
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}finally {
在异步运行并完成
后,会在后台执行此操作 createToast("end of delay");
didPlayerRespond = false;
}
}
};delay.start();
这是第二个,因为它与方法的其余部分同步执行。
createToast("end of delayed RandomCue Method");
}
答案 1 :(得分:2)
这并没有回答你关于祝酒顺序的问题,但是你确定,当你说
时我遇到的问题是链接中提供的代码(方法 从onclick方法中调用)应该改变图像, 将bool值设置为false,等待1.5秒,然后更改相同 bool值回归真实。
当bool值为true时,更改图片的方法是 应该被跳过,但事实并非如此,我不知道为什么 但我认为这与我创建的要点中的代码有关 下方。
是这样的吗?
看起来更像是,如果布尔值设置为false,则需要跳过另一种更改图片的方法,只要它是真的,就需要定期更改图片。
尝试一下,也许您的图片在用户触发onClick后很快就会发生变化。