flex游戏引擎(PushButton)-控制输入(1)
时间:2010-07-18 来源:deepfuture
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>
相关阅读 更多 +