记忆游戏卡翻转问题
Memory game card flipping problems
我正在开发一个简单的记忆游戏,您基本上可以匹配相同的牌。如果两者不匹配,我希望卡片能够翻转回来。翻转代码如下:
mT1.unselect();
mT2.unselect();
当我把它放在 else 语句中时,卡片会立即翻转回来,所以我使用了一个处理程序来减慢它的速度。
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
mT1.unselect();
mT2.unselect();
playSound( SOUND_FAILED );
}
}, 2000);
但是我测试的时候它没有倒转,而是在给定的时间后播放声音。有什么问题吗?
完整代码:
public void onPosition(int position)
{
if (position == mLastPosition)
{
return;
}
mLastPosition = position;
Tile tile = mList.get(position);
tile.select();
int sound = tile.mResId % mSounds.length;
playSound(sound);
switch (mSelectedCount)
{
case 0:
mT1 = tile;
break;
case 1:
mT2 = tile;
if (mT1.getResId() == mT2.getResId())
{
mT1.setFound(true);
mT2.setFound(true);
mFoundCount += 2;
playSound(SOUND_SUCCEED);
}
else
{
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
mT1.unselect();
mT2.unselect();
playSound( SOUND_FAILED );
}
}, 2000);
}
break;
case 2:
if (mT1.getResId() != mT2.getResId())
{
}
mSelectedCount = 0;
mT1 = tile;
break;
}
mSelectedCount++;
mMoveCount++;
updateView();
checkComplete();
}
关于你之前的问题,你仍然没有给我们足够的背景,但我会在黑暗中进行一次疯狂的刺杀 - 也许你需要打电话给:
updateView();
在您的 Runnable
的 run()
方法中。
也许如果您 post 您的 updateView()
方法及其工作原理的更多上下文,如果这个猜测没有解决它,我们可能会提供更多帮助。
我正在开发一个简单的记忆游戏,您基本上可以匹配相同的牌。如果两者不匹配,我希望卡片能够翻转回来。翻转代码如下:
mT1.unselect();
mT2.unselect();
当我把它放在 else 语句中时,卡片会立即翻转回来,所以我使用了一个处理程序来减慢它的速度。
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
mT1.unselect();
mT2.unselect();
playSound( SOUND_FAILED );
}
}, 2000);
但是我测试的时候它没有倒转,而是在给定的时间后播放声音。有什么问题吗?
完整代码:
public void onPosition(int position)
{
if (position == mLastPosition)
{
return;
}
mLastPosition = position;
Tile tile = mList.get(position);
tile.select();
int sound = tile.mResId % mSounds.length;
playSound(sound);
switch (mSelectedCount)
{
case 0:
mT1 = tile;
break;
case 1:
mT2 = tile;
if (mT1.getResId() == mT2.getResId())
{
mT1.setFound(true);
mT2.setFound(true);
mFoundCount += 2;
playSound(SOUND_SUCCEED);
}
else
{
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
mT1.unselect();
mT2.unselect();
playSound( SOUND_FAILED );
}
}, 2000);
}
break;
case 2:
if (mT1.getResId() != mT2.getResId())
{
}
mSelectedCount = 0;
mT1 = tile;
break;
}
mSelectedCount++;
mMoveCount++;
updateView();
checkComplete();
}
关于你之前的问题,你仍然没有给我们足够的背景,但我会在黑暗中进行一次疯狂的刺杀 - 也许你需要打电话给:
updateView();
在您的 Runnable
的 run()
方法中。
也许如果您 post 您的 updateView()
方法及其工作原理的更多上下文,如果这个猜测没有解决它,我们可能会提供更多帮助。