flex游戏引擎(PushButton)-控制输入(1)
InputManager可以完成一些简单的控制,但是当你要完成较复杂的控制时应使用InputMap,虽然InputManager使用较简单如下:
1.
if
(InputManager.isKeyDown(InputKey.UP))
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
>