2017-01-11 2 views
0

私はランドスケープのJavaゲームに取り組んでいます。j2meゲームで効率的にスプライト配列をレンダリングするには?

私はこのようなスプライト配列を持っています。

Sprite stickArray[] = new Sprite[10]; 

このように、可視性をfalseとして初期化します。

for (int j = 0; j < stickArray.length; j++) { 

     if (stickArray[j] != null) { 

      stickArray[j].setPosition(stickX, stickY); 
      stickArray[j].setVisible(false); 
     } 
    } 

後で、キーを繰り返して縦に並べるように配置したいのですが、最初はfalseです。

public void keyRepeatInGame(int keyCode) { 
    int gameKey = getGameAction(keyCode); 
    Graphics g = getGraphics(); 
    if (gameKey == FIRE || keyCode == KEY_NUM5) { 
     pressBool = true; 
    } 
} 

これ以降、私はこのようなコードを書いています。 最初に1つのStickspriteがあります。このスプライトの上に、スペースキーでkeyrepeat()を鳴らしてそれぞれのスティックを配置したいと思います。

for (int i = 0; i < stickArray.length; i++) { 
      if (pressBool) { 
       if (i == 0) { 
        stickArray[i].setPosition(stickSprite.getX(), 
          stickSprite.getY() - stickSprite.getHeight()); 
        stickArray[i].setVisible(true); 
       } else { 
        stickArray[i].setPosition(stickArray[i-1].getX(), 
          stickArray[i-1].getY() - stickArray[i].getHeight()); 
        stickArray[i].setVisible(true); 
       } 
      } 
     } 

このコードは部分的に動作しています。スティックはスプライトにすべて追加されています。

どのようにコードを変更して、keyrepeat()だけを呼び出してスティックを繰り返し追加し、それを1つずつ正しく表示させることができますか?

+0

質問は不明です。http://stackoverflow.com/help/mcveを投稿してください – vels4j

答えて

0

コードを次のような追加の条件とbreak文で変更しました。

if (pressBool) { 
       if (stickSprite != null && !stickArray[i].isVisible() 
         && stickArray[i] != null) { 
        if (i == 0) { 
         stickArray[i].setPosition(
           stickSprite.getX(), 
           stickSprite.getY()); 
         stickArray[i].setVisible(true); 
         break; 
        } else if (i > 0) { 
         stickArray[i].setPosition(
           stickArray[i].getX(), 
           stickArray[i - 1].getY() 
             - stickArray[i].getHeight()); 
         stickArray[i].setVisible(true); 
         break; 
        } 
       } 
      } 

関連する問題