Java : Keystate operation issue

标签 java java-me

我在将屏幕更改为我想要显示的图像时遇到问题。

图像是一个 spritesheet,它被设置为一个数组(即第一个屏幕位于数组索引 0 等...)

按UP键、LEFT键和ENTER键可以改变,但按DOWN键程序不会显示正确的图像。

我最终想放弃按箭头键并用它们代替数字(电话号码键) 4 返回,1,2,3 转到某些页面,并用 Enter 转到下一页(如果有更多页面)特定页面上的信息。

    private void actOnKeyStates(int k) {
        if ((k & DOWN) != 0) {
            Title = false;
            HowToPlay = true;
            Controls = false;
            About = false;
        }
        if ((k & UP) != 0) {
            Title = false;
            HowToPlay = false;
            Controls = true;
            About = false;
        }

        if ((k & LEFT) != 0) {
            Title = true;
            HowToPlay = false;
            Controls = false;
            About = false;
        }

        if ((k & FIRE_PRESSED) != 0) {
            Title = false;
            HowToPlay = false;
            Controls = false;
            About = true;
        }
        update();

    }

    public void update() {
        if (Title) {
            Screen.setFrame(0);
        }
        if (HowToPlay) {
            Screen.setFrame(1);
        }
        if (Controls) {
            Screen.setFrame(4);
        }
        if (About) {
            Screen.setFrame(5);
        }

    }

如果您对此事有任何建议,我将不胜感激。

最佳答案

首先,我认为如果您为游戏建立一个状态,而不是仅仅使用越来越多的 boolean 值,会更好。比如这样:

public enum ScreenState { Title, HowToPlay, Controls, About }    
private ScreenState currentScreen = ScreenState.Title;

private void actOnKeyStates(int k) {
    if ((k & DOWN) != 0) {
        currentScreen = ScreenState.HowToPlay;
    }

    if ((k & UP) != 0) {
        currentScreen = ScreenState.Controls;
    }

    if ((k & LEFT) != 0) {
        currentScreen = ScreenState.Title;
    }

    if ((k & FIRE_PRESSED) != 0) {
        currentScreen = ScreenState.About;
    }

    update();
}

public void update() {
    switch(currentScreen) {
        case Title:       
            Screen.setFrame(0);
            break;
        case HowToPlay:
            Screen.setFrame(1);
            break;
        case Controls:
            Screen.setFrame(4);
            break;
        case About:
            Screen.setFrame(5);
            break;
     }
 }

您需要做的第二件事是确认按下向下箭头时 k & DOWN 正在正确执行。还要确认您要查找的图像已正确放置在 Sprite 表中的位置 1 中。

关于Java : Keystate operation issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5583769/

相关文章:

java - 将数据保存在内存中和将其写入驱动器之间是否存在最佳点?

java - 自由图表 |如何在每个栏的顶部添加百分比并设置域轴(X 轴)刻度标签的格式?

java - java中如何从hashmap中获取arraylist?

java - 为什么我仍然无法找到 Java SE 运行时环境?

java - 哪种格式的compress适合hadoop中的大图输出?

NetBeans 中的 Java Me 平台问题

java - 如何使用 lwuit 在 j2me 中放置广告横幅?

java - 为 J2ME 应用程序设计 GUI

JAVA正则表达式在字符和数字之间添加空格

netbeans - 如何将 LWUIT 与 NetBeans IDE 7.1.2 一起使用?