NumberManager.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. function NumberManager() {
  2. base(this,LSprite,[]);
  3. this.init();
  4. }
  5. NumberManager.prototype.init = function() {
  6. var self = this;
  7. self.colorMap = COLOR_MAP;
  8. self.colorMap.offset = {x:15,y:90};
  9. self.board = {x:15,y:90,width:616,height:856};
  10. self.targetList = Util.shuffle(Util.range(0,35));
  11. self.step = 0;
  12. self.setNumbers();
  13. self.seriesCount = 0;
  14. self.addEventListener(LEvent.END_CONTACT, self.onremoved);
  15. };
  16. NumberManager.prototype.setNumbers = function(){
  17. var self = this;
  18. self.targetListText = [];
  19. for(var i = 0; i < self.targetList.length; i++){
  20. var theTextField = new LTextField();
  21. theTextField.color = "#926f05";
  22. theTextField.size = 28;
  23. theTextField.text = (i+1)+"";
  24. theTextField.font = "微软雅黑";
  25. self.addChild(theTextField);
  26. theTextField.x = self.colorMap.positions[17][0]+self.board.x-theTextField.getWidth()*.5;
  27. theTextField.y = self.colorMap.positions[17][1]+self.board.y-theTextField.getHeight()*.6;
  28. theTextField.targetX = self.colorMap.positions[self.targetList[i]][0]+self.board.x-theTextField.getWidth()*.5;
  29. theTextField.targetY = self.colorMap.positions[self.targetList[i]][1]+self.board.y-theTextField.getHeight()*.6;
  30. LTweenLite.to(theTextField, 0.5, {x:theTextField.targetX, y:theTextField.targetY, loop:false, ease:LEasing.Sine.easeIn})
  31. self.targetListText.push(theTextField);
  32. }
  33. }
  34. NumberManager.prototype.isInBoard = function(point){
  35. var self = this;
  36. if(point.x > self.board.x
  37. && point.y > self.board.y
  38. && point.x < self.board.x+self.board.width
  39. && point.y < self.board.y+self.board.height
  40. ){
  41. return true;
  42. }
  43. return false;
  44. }
  45. NumberManager.prototype.getColorFromMap = function(point){
  46. var self = this;
  47. var x = parseInt(point.x/self.colorMap.rate);
  48. var y = parseInt(point.y/self.colorMap.rate);
  49. return self.colorMap.datalist[y*(parseInt(self.colorMap.wOriginal/self.colorMap.rate))+x]
  50. }
  51. NumberManager.prototype.isCorrect = function(color){
  52. var self = this;
  53. if(color == self.targetList[self.step]+1){
  54. return true;
  55. }
  56. return false;
  57. }
  58. NumberManager.prototype.dealCorrect = function(){
  59. var self = this;
  60. self.targetListText[self.step].color = "#cea95e"
  61. self.targetListText[self.step].isSelected = true;
  62. self.step++;
  63. self.seriesCount++;
  64. }
  65. NumberManager.prototype.dealWrong = function(color){
  66. var self = this;
  67. self.seriesCount = 0;
  68. if(color){
  69. console.log(color)
  70. var index = self.targetList.indexOf(color-1)
  71. var object = self.targetListText[index];
  72. if(!object.isPlayingWrongTips){
  73. var duration = 0.2;
  74. var originalColor = object.color;
  75. var targetColor = "#ef4a10";
  76. object.color = targetColor;
  77. object.isPlayingWrongTips = true;
  78. LTweenLite.to(object, duration, {loop:false, ease:LEasing.None.easeIn, onComplete:function(){
  79. if(!object.isSelected){
  80. object.color = originalColor;
  81. }
  82. }})
  83. .to(object, duration, {loop:false, ease:LEasing.None.easeIn, onComplete:function(){
  84. if(!object.isSelected){
  85. object.color = targetColor;
  86. }
  87. }})
  88. .to(object, duration, {loop:false, ease:LEasing.None.easeIn, onComplete:function(){
  89. if(!object.isSelected){
  90. object.color = originalColor;
  91. }
  92. object.isPlayingWrongTips = false;
  93. }});
  94. }
  95. }
  96. }
  97. NumberManager.prototype.hit = function(point){
  98. var self = this;
  99. if(self.isInBoard(point)){
  100. pointInBoard = {x:point.x-self.board.x, y:point.y-self.board.y}
  101. var color = self.getColorFromMap(pointInBoard);
  102. if(self.isCorrect(color)){
  103. self.dealCorrect();
  104. return;
  105. }else{
  106. self.dealWrong(color)
  107. }
  108. }
  109. self.dealWrong();
  110. }
  111. NumberManager.prototype.getNextNumber = function(){
  112. var self = this;
  113. return (self.step+1);
  114. }
  115. NumberManager.prototype.getSeriesCount = function(){
  116. var self = this;
  117. return (self.seriesCount);
  118. }
  119. NumberManager.prototype.onremoved = function() {
  120. var self = this;
  121. }