SnakeKeyboardSteeringInput.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. var o0 = require('o0');
  2. var o0CC = require('o0CC');
  3. cc.Class({
  4. extends: require('SnakeSteeringControl'),
  5. properties: {
  6. keyTurning:null,
  7. key:null,
  8. speedingKey:0,
  9. },
  10. onLoad: function () {
  11. this._super();
  12. cc.systemEvent.on(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
  13. cc.systemEvent.on(cc.SystemEvent.EventType.KEY_UP, this.onKeyUp, this);
  14. this.keyTurning = new Array();
  15. this.keyTurning[cc.macro.KEY.right] = 90;
  16. this.keyTurning[cc.macro.KEY.left] = -90;
  17. this.keyTurning[cc.macro.KEY.d] = 90;
  18. this.keyTurning[cc.macro.KEY.a] = -90;
  19. this.key = new Array();
  20. this.speedingKey = cc.macro.KEY.space;
  21. },
  22. onDestroy () {
  23. cc.systemEvent.off(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
  24. cc.systemEvent.off(cc.SystemEvent.EventType.KEY_UP, this.onKeyUp, this);
  25. },
  26. update: function (dt) {
  27. var targetTurning = 0;
  28. for(var _key in this.keyTurning){
  29. if(this.key[_key] == true){
  30. targetTurning+=this.keyTurning[_key];
  31. }
  32. }
  33. this.setTargetTurning(targetTurning);
  34. this._super();
  35. },
  36. onKeyDown: function (event) {
  37. if(this.keyTurning[event.keyCode] != null){
  38. this.key[event.keyCode] = true;
  39. }
  40. if(event.keyCode == this.speedingKey){
  41. this.setTargetSpeeding(true);
  42. }
  43. },
  44. onKeyUp: function (event) {
  45. if(this.keyTurning[event.keyCode] != null){
  46. this.key[event.keyCode] = false;
  47. }
  48. if(event.keyCode == this.speedingKey){
  49. this.setTargetSpeeding(false);
  50. }
  51. }
  52. });