我正在看一个示例游戏项目.你能解释一下这些方面吗:
public static final int GAMEPAD_UP = 0x0040;
Run Code Online (Sandbox Code Playgroud)
有什么用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");
}
}
Run Code Online (Sandbox Code Playgroud)
这些价值观的目的是什么?
Gug*_*see 11
这是一个只有一位设置的值:
00000000000000000000000001000000
Run Code Online (Sandbox Code Playgroud)
所以你也可以拥有,GAMEPAD_RIGHT=0x0010并且你可以通过AND'ing对OR中的任何一个进行OR值和测试.这在游戏中很常见,特别是在移动设备上.
这种编码的目的是优化空间并能够在一行中测试各种情况.
通过使用一个比特,例如,每个可能的游戏手柄键,您可以在一个int上表示(即使在旧的8位控制台日中的一个字节,控制台上只有很少的键)每个键的状态(它是'on' '或'关').
UP + RIGHT,按下两个键,给出:
00000000000000000000000001000000
OR
00000000000000000000000000010000
=
00000000000000000000000001010000
Run Code Online (Sandbox Code Playgroud)