【发布时间】:2014-03-14 19:29:14
【问题描述】:
我正在开发一款纸牌游戏应用程序,我完成了基本的东西,现在我正努力让它看起来很专业。 我首先要做的就是分配卡牌的效果, 我想做一个洗牌效果。 当一张牌发给玩家时,我希望与下一张将分发给他的牌有至少 500 毫秒的差异。 想法? 这是我的代码的一部分..
private void SetTheGame() {
SetShuffleSound();
for ( int i = 0; i < Imagename.length;i++) {
Imagename[i] = (ImageView) findViewById(WTF[i]);
CountCards();
Random = getRandom();
SwitchImages SwitchMe = new SwitchImages(myNewArray[Random]);
int first = SwitchMe.ChangeImages();
Imagename[i].setImageResource(myNewArray[Random]);
Imagename[i].setVisibility(View.VISIBLE);
CardsCount valueOfCard = new CardsCount(myNewArray[Random]);
int a = valueOfCard.WhatsMyValue();
String b = valueOfCard.TheFamily();
switch (i) {
case 0:
if (first != 0) {
Imagename[0].setImageResource(first);
}
FirstColumnComputer.add(a);
FirstColumnComputerFAMILY.add(b);
break;
case 1:
if (first != 0) {
Imagename[1].setImageResource(first);
}
SecondColumnComputer.add(a);
SecondColumnComputerFAMILY.add(b);
break;
case 2:
if (first != 0) {
Imagename[2].setImageResource(first);
}
ThirdColumnComputer.add(a);
ThirdColumnComputerFAMILY.add(b);
break;
case 3:
if (first != 0) {
Imagename[3].setImageResource(first);
}
FourColumnComputer.add(a);
FourColumnComputerFAMILY.add(b);
break;
case 4:
if (first != 0) {
Imagename[4].setImageResource(first);
}
FifthColumnComputer.add(a);
FifthColumnComputerFAMILY.add(b);
break;
case 5:
FirstColumnPlayer.add(a);
FirstColumnPlayerFAMILY.add(b);
break;
case 6:
SecondColumnPlayer.add(a);
SecondColumnPlayerFAMILY.add(b);
break;
case 7:
ThirdColumnPlayer.add(a);
ThirdColumnPlayerFAMILY.add(b);
break;
case 8:
FourColumnPlayer.add(a);
FourColumnPlayerFAMILY.add(b);
break;
case 9:
FifthColumnPlayer.add(a);
FifthColumnPlayerFAMILY.add(b);
break;
}
Cards.remove(Random);
// MakeTheCardPause();
}
SentTheLinkedList();
}
MakeTheCardPause() 是问题...
private void MakeTheCardPause() {
Thread Timer = new Thread()
{
public void run()
{
try{
sleep(1000);
}catch(InterruptedException e)
{
e.printStackTrace();
}finally
{
//do something...
}
}
};
Timer.start();
}
谢谢!
【问题讨论】:
-
您应该查看这个先前的 SO 问题,该问题继续解释如何以您尝试的方式正确使用睡眠。 stackoverflow.com/questions/14005549/…
-
您不需要任何线程,只需使用 Handler 并发送延迟消息即可达到您想要的效果
-
确实,在 Android 等事件驱动的系统上,睡眠并不是完成此任务的正确方法——相反,您应该使用各种机制之一来安排未来事件并处理下一张卡片在那个事件中。
-
@JoeBoyle - 这是一个通用的 Java 答案,适用于在控制台输出消息之间创建最短时间,但它不是特别适合 Android UI 编程的解决方案。
-
你能创建一个 Runnable 然后在它上面调用 postDelayed() 并传递 500 毫秒吗?
标签: java android multithreading loops sleep