2016-10-14 2 views
0

Я хочу изменить растровое изображение, содержащее изображение, когда пользователь нажимает на экран. т.е. изображение по умолчанию - shadow1, теперь то, что я хочу, - это то, что когда пользователь коснулся экрана, это изображение изменилось на shadow2, затем снова, если пользователь коснулся затем shadow3, а затем при следующем касании изображение снова появится как shadow1, и оно продолжается и продолжается и на. поэтому в основном есть три изображения, и я хочу, чтобы когда пользователь касался экрана, изображение менялось с каждым нажатием. Ниже приведен код, который я пробовал, но он все еще не работает, как ожидалось, то есть изображение изменяется с shadow1 на shadow2, но затем не изменяется на shadow3 или shadow1, даже если я коснулся много раз.Изменение изображений или растровое изображение при каждом касании экрана

public void Touched(float x, float y) 
{ 
    boom = false; 

    try{ 
     switch (bird.GetState()) { 
     case 0: 
      distance = 0; 
      bird.SetState(1); 
      flapped = true; 
      Bitmap workingBitmap = BitmapFactory.decodeResource(gameLogic.Resources(), R.drawable.shadow1); 
      bitmapBird = workingBitmap.copy(Bitmap.Config.ARGB_8888, false); 
      if (bitmapBird==workingBitmap) 
      { 

      } 


      riseCounter = 0; 
      pipeValues.clear(); 

      //SoundManager.playSound(2, 1); 

      break; 
     case 1: 
     { 
      riseCounter = 0; 
      flapped = true; 
      t = 3; 

      Bitmap workingBitmappp = BitmapFactory.decodeResource(gameLogic.Resources(), R.drawable.shadow2); 
      bitmapBird = workingBitmappp.copy(Bitmap.Config.ARGB_8888, false); 

      //SoundManager.playSound(2, 1); 


     } 
     break; 
     case 2: 
     { 
      riseCounter = 0; 
      flapped = true; 
      t = 0; 

     } 
     break; 
     default: 
      Bitmap workingBitma = BitmapFactory.decodeResource(gameLogic.Resources(), R.drawable.shadow3); 
      bitmapBird = workingBitma.copy(Bitmap.Config.ARGB_8888, false); 

      break; 
     } 
    } catch(Exception e){} 
} 

Я думаю, что должен быть цикл for или while в 'case 1', и всякий раз, когда пользователь нажимает, тогда изображение изменяется. Пожалуйста, помогите мне с этим.

ответ

1

Вы можете просто использовать значение int, чтобы отслеживать изображение, отображаемое как; Сначала инициализируйте int на уровне класса;

int num = 0; 

значит вы можете использовать его как;

if(num == 0){ 
     loadFirstImage(); 
     num++; 
    } 
    else if(num == 1) 
    { 
    loadSecondImage(); 
    num++; 
} 
else if(num == 2){ 
    loadThirdImage(); 
    num = 0 ; 
} 
+0

Простой и большой ответ. Thankyou :) –

1

Я думаю, что вам нужно изменить состояние птицы в вашем заявлении о втором случае. Первая итерация будет устанавливать состояние 1, оттуда, единственный случай, который вы можете получить, - case 1:, потому что вы его никогда не меняете.

Так что вам нужно что-то вроде

case 1: 
    bird.SetState(2); 
    //.... 

Надежда, что помогает

+0

Проблема решена. Спасибо за Ваш ответ. Upvote (Y) –