如何在android中基于onClick替换定时器?
问题描述:
我正在尝试使用Firebase在Android Studio中制作一个TicTacToe在线多人游戏,下面是我用于按钮(TicTacToe 9个块中的1个)的代码。现在我正在使用一个计时器来阻止用户点击任何其他按钮后,他点击该按钮,让其他用户有时间点击。但是我想这样做是为了让一个用户不能点击任何按钮,直到其他用户点击一个按钮。有没有办法做到这一点? 默认值nothing & face & a1为“零”,默认值为“one”,而rface只是一个字符串变量从“face”中获取其值。如何在android中基于onClick替换定时器?
//below clicking
a1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//below
//starting if condition
if (ra1.equals(nothing)){
if (rface.equals(nothing)){
a1.setBackgroundResource(R.drawable.rounded);
Firebase refChild = ref2.child("a1");
refChild.setValue("round");
refChild = ref2.child("face");
refChild.setValue("one");
}
else if (rface.equals(added)) {
a1.setBackgroundResource(R.drawable.crossed);
Firebase refChild = ref2.child("a1");
refChild.setValue("cross");
refChild = ref2.child("face");
refChild.setValue("zero");
}
//timer below
a1.setClickable(false);
a2.setClickable(false);
a3.setClickable(false);
b1.setClickable(false);
b2.setClickable(false);
b3.setClickable(false);
c1.setClickable(false);
c2.setClickable(false);
c3.setClickable(false);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
a1.setClickable(true);
a2.setClickable(true);
a3.setClickable(true);
b1.setClickable(true);
b2.setClickable(true);
b3.setClickable(true);
c1.setClickable(true);
c2.setClickable(true);
c3.setClickable(true);
}
}, 3000);
//timer above
}
}
});
答
我建议有两个不同OnClickListener
真是让人不是一个if语句。一个用于X,另一个用于Os。然后你可以来回设置听众。例如,在X的OnClickListener
的末尾,它将使用Os的setOnClickListener()
。
+0
你能否给我提供一些代码示例,这将是非常有用的,谢谢。 –
答
我终于想出了这个算法,我的解决方案:
online=0;
offline=1;
if (online!=offline){
offline=random;
online=offline;
if(shape=0)
{
click(set round);
}
else if(shape=1)
{
click(set cross);
}
}
其中整形是另一个整数我使用一个开关。
以数字结尾的变量名通常表示您应该使用数组或List。 –
至于你的实际问题,你有一台电脑播放器,或者这是为两个人类玩家?两个人类玩家是在同一台设备上还是通过网络玩游戏? –
你的变量名称有点混乱。 'ra1'和'rface'是什么意思?什么是“没有”和“添加”? –