InputManager可以完成一些简单的控制,但是当你要完成较复杂的控制时应使用InputMap,虽然InputManager使用较简单如下:
2.
moveItemUp();
当你有第三方设备输入(比如手柄等),当你要控制键盘和鼠标,你可以采用一种一致的方式去处理它们,这种方式就是使用InputMap,提供一个回调函数,一个输入名称,一个数字参数, Digital inputs (buttons) will be called back with 0 or 1 based on if the button is up or down.用0和1表示键盘的 起来和按下,Analog inputs (mouse) will be called back with the change in position of the input.鼠标使用位置参数。
01.
public
class
MyInputHandlingComponent
extends
TickedComponent
02.
{
03.
public
function
get input():InputMap
04.
{
05.
return
_inputMap;
06.
}
07.
08.
public
function
set input(value:InputMap):
void
09.
{
10.
_inputMap = value;
11.
12.
if
(_inputMap !=
null
)
13.
{
14.
_inputMap.addBinding(
"GoLeft"
, _onLeft);
15.
_inputMap.addBinding(
"GoRight"
, onRight);
16.
}
17.
}
18.
public
override
function
onTick(tickRate:Number):
void
19.
{
20.
// Normally you would update your position based on this; for simplicity
21.
// we just print the direction we are being indicated to move.
22.
var
direction:Number = right - left;
23.
Logger.print(
this
,
"I am moving "
+ direction);
24.
}
25.
26.
private
function
onLeft(value:Number):
void
27.
{
28.
left = value;
29.
}
30.
private
function
onRight(value:Number):
void
31.
{
32.
right = value;
33.
}
34.
35.
36.
private
var
_inputMap:InputMap;
37.
private
var
_left:Number = 0;
38.
private
var
_right:Number = 0;
39.
}
level XML做为实体一部分被启动,注意:你定义输入做为level一部分,更易于支持多人在同一个输入设备游戏
01.
<
entity
name
=
"InputHandlingEntity"
>
02.
<
component
class
=
"MyInputHandlingComponent"
name
=
"Input"
/>
03.
<
Input
>
04.
<!-- These correspond to the calls to AddBinding above. -->
05.
<
GoLeft
>LEFT</
GoLeft
>
06.
<
GoRight
>RIGHT</
GoRight
>
07.
</
Input
>
08.
</
component
>
09.
</
entity
>
鼠标绑定:
1.
<
entity
name
=
"MouseInputHandlingEntity"
>
2.
<
component
class
=
"MyInputHandlingComponent"
name
=
"Input"
/>
3.
<
Input
>
4.
<!-- These correspond to the calls to AddBinding above. Only GoLeft needs to be bound because MOUSE_X gives negative as well as positive results. -->
5.
<
GoLeft
>MOUSE_X</
GoLeft
>
6.
</
Input
>
7.
</
component
>
8.
</
entity
>