2015-08-10 1 views
1

Я работаю над простой игрой памяти, где вы в основном сопоставляете одни и те же карты. Я хочу, чтобы карты могли откидываться назад, если оба они не совпадали. Коды Подавать являются следующие:Memory game card flipping problems

mT1.unselect(); 
mT2.unselect(); 

Когда я положил его в заявлении еще карты переворачивать обратно немедленно, я использовал обработчик, чтобы замедлить его.

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(); 
} 
+1

Возможный дубликат [Проблемы с памятью игры] (http://stackoverflow.com/questions/31926462/memory-game-problems) –

+0

У вас есть проблема в вашей функции mT1.unslect() и mT2.unselect(). ваши эти функции тоже –

+0

Мне жаль, что я этого не понял. – markos

ответ

1

Как Ваш предыдущий вопрос, вы еще не дали нам достаточно контекста, но я буду иметь дикий удар в темноте - может быть, вам нужно позвонить:

updateView(); 

в вашем Runnablerun() метод.

Возможно, если вы разместите свой метод updateView() и еще какой-нибудь контекст того, как он работает, мы, возможно, сможем помочь больше, если это предположение не исправит его.

+0

это действительно сработало !! Большое вам спасибо! я извиняюсь за то, что не предоставлял достаточно информации дважды. – markos

+0

Рад, что это сработало для вас. Этот вопрос был лучше, чем ваш последний, поскольку он дал больше информации о том, что вы пробовали, но без кода для вашего метода 'unselect()' или 'updateView()' очень сложно угадать, что он делает. Только когда вы увидели свой код 'unselect()' в своем ответе @Tarikhelian, я увидел, что он не обновил пользовательский интерфейс и поэтому мог предположить, что вам может потребоваться вызвать 'updateView()'. Надеюсь, вам станет лучше узнать, какая информация имеет отношение к вашим вопросам, поскольку вы продолжаете разрабатывать и использовать stackoverflow. Удачи! – HexAndBugs

+0

Спасибо за совет! хорошего дня – markos