这条线的意义是什么?

时间:2011-03-01 09:06:54

标签: java

我正在看一个示例游戏项目。你能解释一下这些内容:

public static final int GAMEPAD_UP = 0x0040;

0x0040;有什么用?

这是完整的代码:

package com.androidemu;

public class Emulator {
    public static final int VIDEO_W = 240;
    public static final int VIDEO_H = 160;

    public static final int GAMEPAD_UP        = 0x0040;
    public static final int GAMEPAD_DOWN    = 0x0080;
    public static final int GAMEPAD_LEFT    = 0x0020;
    public static final int GAMEPAD_RIGHT    = 0x0010;
    public static final int GAMEPAD_A        = 0x0001;
    public static final int GAMEPAD_B        = 0x0002;
    public static final int GAMEPAD_SELECT    = 0x0004;
    public static final int GAMEPAD_START    = 0x0008;
    public static final int GAMEPAD_TL        = 0x0200;
    public static final int GAMEPAD_TR        = 0x0100;

    public static final int GAMEPAD_A_TURBO    = (GAMEPAD_A << 16);
    public static final int GAMEPAD_B_TURBO    = (GAMEPAD_B << 16);

    public static final int GAMEPAD_UP_LEFT = (GAMEPAD_UP | GAMEPAD_LEFT);
    public static final int GAMEPAD_UP_RIGHT = (GAMEPAD_UP | GAMEPAD_RIGHT);
    public static final int GAMEPAD_DOWN_LEFT = (GAMEPAD_DOWN | GAMEPAD_LEFT);
    public static final int GAMEPAD_DOWN_RIGHT = (GAMEPAD_DOWN | GAMEPAD_RIGHT);

    public native void setRenderSurface(EmulatorView surface,
            int width, int height);
    public native void setKeyStates(int states);
    public native void setOption(String name, String value);

    public native boolean initialize(String libdir, String datadir);
    public native void cleanUp();
    public native void reset();
    public native void power();
    public native boolean loadBIOS(String file);
    public native boolean loadROM(String file);
    public native void unloadROM();
    public native void pause();
    public native void resume();
    public native void run();
    public native boolean saveState(String file);
    public native boolean loadState(String file);

    public void setOption(String name, boolean value) {
        setOption(name, value ? "true" : "false");
    }

    static {
        System.loadLibrary("gba");
    }
}

这些价​​值观的目的是什么?

4 个答案:

答案 0 :(得分:11)

这是一个只有一位设置的值:

00000000000000000000000001000000

所以你也可以拥有GAMEPAD_RIGHT=0x0010,并且你可以通过AND'ing对OR中的任何一个进行OR值和测试。这在游戏中很常见,特别是在移动设备上。

这种编码的目的是优化空间,并能够在一行中测试各种情况。

通过使用一个比特,例如,每个可能的游戏手柄键,你可以在一个int上表示(即使在旧的8位控制台的一个字节,控制台上只有很少的键)每个键的状态(它是“开”或“关”。

UP + RIGHT,按下两个键,给出:

00000000000000000000000001000000

               OR

00000000000000000000000000010000

               =

00000000000000000000000001010000

答案 1 :(得分:1)

 public static final int GAMEPAD_UP = 0x0040;

public static void main(String args[]){
    System.out.print(GAMEPAD_UP);

}


 Output: 64

0x0040是64的十六进制(基数16)表示(基数为10)。

答案 2 :(得分:0)

这是一个十六进制值0x0040的整数常量的定义。

答案 3 :(得分:-3)

概念是,该行为变量GAMEPAD_UP分配ASCII码。这意味着在事后发生keyup事件时,您可以在eventHandler(source)方法中找到此事件的来源。

根据消息来源,你将改变游戏玩法。 ;)