我正在看一个示例游戏项目。你能解释一下这些内容:
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");
}
}
这些价值观的目的是什么?
答案 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)方法中找到此事件的来源。
根据消息来源,你将改变游戏玩法。 ;)