如何在j2me游戏中有效渲染精灵数组?

时间:2017-01-11 08:24:18

标签: java arrays

我正在开发一款风景java游戏。

我有一个像这样的精灵数组;

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);
        }
    }

后来我想在重复一个键时一个接一个地垂直定位它。最初的flashBool是假的。

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

后来我写了这样的代码; 最初一个Sticksprite就在那里。在这个精灵上面,我想把每根棍子放在clalling 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);
                }
            }
        }

此代码正在部分工作.Stick正在添加到精灵上,一次性完成。

如何更改代码以便仅在调用keyrepeat()时重复添加操纵杆,并使其逐一可见?

1 个答案:

答案 0 :(得分: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;
                    }
                }
            }

有效。