【发布时间】:2015-09-11 16:57:18
【问题描述】:
我正在用四张卡片(2x2)构建一个记忆游戏。这四张卡片有一个名为“卡片”的 onClick。这个 onClick 包含一个 If 语句,如果它们不同,则将它们翻转回来,如果它们相同,则保留它们。
卡片的正面图像与4相同,但背面图像不同。我的问题是我希望卡片翻转,但它们已经有一个onClick。那么如何在 If 语句中写“if button clicked”还是有其他解决方案?
编辑:
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
button1.setVisibility(View.INVISIBLE);
pic1 = (ImageView) findViewById(R.id.imageView);
pic2 = (ImageView) findViewById(R.id.imageView2);
pic3 = (ImageView) findViewById(R.id.imageView3);
pic4 = (ImageView) findViewById(R.id.imageView4);
pic1.setImageResource(R.drawable.img1);
pic2.setImageResource(R.drawable.img1);
pic3.setImageResource(R.drawable.img1);
pic4.setImageResource(R.drawable.img1);
pic1.setVisibility(View.VISIBLE);
pic2.setVisibility(View.VISIBLE);
pic3.setVisibility(View.VISIBLE);
pic4.setVisibility(View.VISIBLE);
}
});
}
public void cards(View v) {
if (v.getId() == pic1.getId() ) {
pic1.setImageResource(R.drawable.img2);
pic1.setTag("img2");
} else if (v.getId() == pic2.getId()) {
pic2.setImageResource(R.drawable.img2);
pic2.setTag("img2");
} else if (v.getId() == pic3.getId()) {
pic3.setImageResource(R.drawable.img3);
pic3.setTag("img3");
} else if (v.getId() == pic4.getId()) {
pic4.setImageResource(R.drawable.img3);
pic4.setTag("img3");
}
if (R.drawable.img2 == R.drawable.img2) {
pic1.setImageResource(R.drawable.img2);
pic1.getTag();
pic2.setImageResource(R.drawable.img2);
pic2.getTag();
}
if (R.drawable.img3 == R.drawable.img3) {
pic3.setImageResource(R.drawable.img3);
pic3.getTag();
pic4.setImageResource(R.drawable.img3);
pic4.getTag();
}
if (R.drawable.img2 != R.drawable.img2 || R.drawable.img3 != R.drawable.img3) {
pic1.setImageResource(R.drawable.img1);
pic2.setImageResource(R.drawable.img1);
pic3.setImageResource(R.drawable.img1);
pic4.setImageResource(R.drawable.img1);
}
}
我尝试的第二种方法:@Override 公共无效 onClick(查看 v){ button1.setVisibility(View.INVISIBLE); pic1 = (ImageView) findViewById(R.id.imageView); pic2 = (ImageView) findViewById(R.id.imageView2); pic3 = (ImageView) findViewById(R.id.imageView3); pic4 = (ImageView) findViewById(R.id.imageView4);
pic1.setImageResource(R.drawable.img1);
pic2.setImageResource(R.drawable.img1);
pic3.setImageResource(R.drawable.img1);
pic4.setImageResource(R.drawable.img1);
pic1.setVisibility(View.VISIBLE);
pic2.setVisibility(View.VISIBLE);
pic3.setVisibility(View.VISIBLE);
pic4.setVisibility(View.VISIBLE);
if (R.drawable.img2 == R.drawable.img2) {
pic1.setImageResource(R.drawable.img2);
pic2.setImageResource(R.drawable.img2);
}
if (R.drawable.img3 == R.drawable.img3) {
pic3.setImageResource(R.drawable.img3);
pic4.setImageResource(R.drawable.img3);
}
if (R.drawable.img2 != R.drawable.img2 || R.drawable.img3 != R.drawable.img3) {
pic1.setImageResource(R.drawable.img1);
pic2.setImageResource(R.drawable.img1);
pic3.setImageResource(R.drawable.img1);
pic4.setImageResource(R.drawable.img1);
}
}
});
}
public void pic1Click(View v){
pic1.setImageResource(R.drawable.img1);
}
public void pic2Click(View v){
pic2.setImageResource(R.drawable.img1);
}
public void pic3Click(View v){
pic3.setImageResource(R.drawable.img2);
}
public void pic4Click(View v){
pic4.setImageResource(R.drawable.img2);
}
【问题讨论】:
-
你不能有 card1、card2、card3、card4 onClick's 然后将被点击的 id 发送到 main 函数来完成工作
-
在您的按钮单击事件监听器中,设置一些布尔变量,以跟踪按钮是否被单击。或者改用自定义复选框。
-
我的评论(对丑陋的源代码)比较图像(通过 java 中的引用)正式合法,但这是不好的做法,没有表达目标“程序员想要做什么”
标签: java android if-statement memory