SnakeKeyboardArrowkeyInput.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. var o0 = require('o0');
  2. var o0CC = require('o0CC');
  3. cc.Class({
  4. extends: require('SnakeDirectionInput'),
  5. properties: {
  6. keyDirection: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.keyDirection = new Array();
  15. this.keyDirection[cc.macro.KEY.right] = new o0.Vector2(1,0);
  16. this.keyDirection[cc.macro.KEY.left] = new o0.Vector2(-1,0);
  17. this.keyDirection[cc.macro.KEY.up] = new o0.Vector2(0,1);
  18. this.keyDirection[cc.macro.KEY.down] = new o0.Vector2(0,-1);
  19. this.keyDirection[cc.macro.KEY.d] = new o0.Vector2(1,0);
  20. this.keyDirection[cc.macro.KEY.a] = new o0.Vector2(-1,0);
  21. this.keyDirection[cc.macro.KEY.w] = new o0.Vector2(0,1);
  22. this.keyDirection[cc.macro.KEY.s] = new o0.Vector2(0,-1);
  23. this.key = new Array();
  24. this.speedingKey = cc.macro.KEY.space;
  25. },
  26. onDestroy () {
  27. cc.systemEvent.off(cc.SystemEvent.EventType.KEY_DOWN, this.onKeyDown, this);
  28. cc.systemEvent.off(cc.SystemEvent.EventType.KEY_UP, this.onKeyUp, this);
  29. },
  30. update: function (dt) {
  31. var targetVector = new o0.Vector2(0,0);
  32. for(var _key in this.keyDirection){
  33. if(this.key[_key] == true){
  34. targetVector = targetVector.plus(this.keyDirection[_key]);
  35. }
  36. }
  37. if(this.keyDirection.length != 0 && targetVector.length != 0){
  38. this.setTargetVector(targetVector.mod);
  39. }else{
  40. this.removeTargetVector();
  41. }
  42. this._super();
  43. },
  44. onKeyDown: function (event) {
  45. if(this.keyDirection[event.keyCode] != null){
  46. this.key[event.keyCode] = true;
  47. }
  48. if(event.keyCode == this.speedingKey){
  49. this.setTargetSpeeding(true);
  50. }
  51. },
  52. onKeyUp: function (event) {
  53. if(this.keyDirection[event.keyCode] != null){
  54. this.key[event.keyCode] = false;
  55. }
  56. if(event.keyCode == this.speedingKey){
  57. this.setTargetSpeeding(false);
  58. }
  59. }
  60. });