main2.js 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302
  1. /**
  2. * Created by can on 15/6/24.
  3. */
  4. var imageData = [
  5. {name: "about_bg", path: basePath + "about_bg.jpg"},
  6. {name: "again", path: basePath + "again.png"},
  7. {name: "bg", path: basePath + "bg.jpg"},
  8. {name: "bucket", path: basePath + "bucket.png"},
  9. {name: "guize_button", path: basePath + "guize_button.png"},
  10. {name: "over_bg", path: basePath + "over_bg.jpg"},
  11. {name: "person-fs-wet", path: basePath + "person-fs-wet.png"},
  12. {name: "person-fs", path: basePath + "person-fs.png"},
  13. {name: "person-ldh-wet", path: basePath + "person-ldh-wet.png"},
  14. {name: "person-ldh", path: basePath + "person-ldh.png"},
  15. {name: "person-lj-wet", path: basePath + "person-lj-wet.png"},
  16. {name: "person-b-wet", path: basePath + "person-b-wet.png"},
  17. {name: "person-lj", path: basePath + "person-lj.png"},
  18. {name: "result", path: basePath + "result.png"},
  19. {name: "share", path: basePath + "share.png"},
  20. {name: "share_tip", path: basePath + "share_tip.png?t=2"},
  21. {name: "start", path: basePath + "start.jpg"},
  22. {name: "start_button", path: basePath + "start_button.png"},
  23. {name: "water-full", path: basePath + "water-full.png"},
  24. {name: "back", path: basePath + "back.png"}
  25. ];
  26. var dataList, loadingLayer, bg_sound = new LSound(), mainLayer = new LSprite(), stageLayer = new LSprite();
  27. var bgLayer = new LSprite();
  28. var is_play = false;
  29. function welcome() {
  30. reset();
  31. addElements([
  32. {src: 'start'},
  33. {src: 'start_button',type:'button',center:true,Y:630,click_up:start},
  34. {src: 'guize_button',type:'button',center:true,Y:742,click_up:about}
  35. ], bgLayer);
  36. }
  37. function about(){
  38. reset();
  39. addElements([
  40. {src:'about_bg'},
  41. {src:'back',X:478,Y:46,click_up:welcome},
  42. {src:'start_button',type:'button',center:true,Y:735,click_up:start}
  43. ],bgLayer);
  44. }
  45. var headerLocation = [
  46. [80, 365],
  47. [418, 362],
  48. [226, 510],
  49. [432, 564],
  50. [80, 625],
  51. [329, 703]
  52. ];
  53. var locations=[];
  54. var emptyLocation=[];
  55. var step=50,index=40;
  56. var is_over=false;
  57. var score=0;
  58. var scoreView,timer;
  59. function start(){
  60. reset();
  61. is_over=false;
  62. score=0;
  63. step=30,index=40;
  64. locations=[], emptyLocation=[];
  65. addElements([
  66. {src:'bg'}
  67. ],bgLayer);
  68. bgLayer.addChild(stageLayer);
  69. headerLocation.forEach(function(item){
  70. var l=new LSprite();
  71. l.x=item[0];
  72. l.y=item[1];
  73. l.graphics.drawRect(0,"#ff0000",[0,0,124,150]);
  74. locations.push(l);
  75. emptyLocation.push(l);
  76. stageLayer.addChild(l);
  77. });
  78. timer=new Timer();
  79. timer.x=544;
  80. timer.y=48;
  81. timer.run();
  82. timer.callback=over;
  83. scoreView=new LTextField();
  84. scoreView.color="#ffffff";
  85. scoreView.size=22;
  86. scoreView.text="0";
  87. scoreView.x=554;
  88. scoreView.y=78;
  89. bgLayer.addChild(timer);
  90. bgLayer.addChild(scoreView);
  91. bgLayer.addEventListener(LEvent.ENTER_FRAME,onframe);
  92. }
  93. function onframe() {
  94. if (!is_over) {
  95. if (++index >= step) {
  96. if (step > 10)step -= 3;
  97. index = 0;
  98. if (emptyLocation.length > 0) {
  99. var r = rangeRandom(0, emptyLocation.length - 1);
  100. var empty = emptyLocation.splice(r, 1);
  101. empty[0].removeAllChild();
  102. var type = rangeRandom(1,2);
  103. var heard = new Header(type, empty[0], appendEmpty);
  104. if(step>=40){
  105. heard.time=.8;
  106. }else if(step>=20){
  107. heard.time=0.5;
  108. }else{
  109. heard.time=0.4;
  110. }
  111. heard.show();
  112. empty[0].addChild(heard);
  113. }
  114. }
  115. }
  116. }
  117. function over(){
  118. reset();
  119. is_over=true;
  120. timer.enable=false;
  121. addElements([
  122. {src:'over_bg'},
  123. {src:'again',type:'button',X:130,Y:778,click_up:start},
  124. {src:'share',type:'button',X:340,Y:778,click_up:function(){
  125. addElements({src:'share_tip',click_up:function(e){
  126. bgLayer.removeChild(e.currentTarget);
  127. }},bgLayer);
  128. }},
  129. {src:'result',X:150,Y:414},
  130. {type:LTextField,X:349,Y:462,init:function(obj){
  131. obj.text=score;
  132. obj.color="#FF0000";
  133. obj.size=20;
  134. }}
  135. ],bgLayer);
  136. }
  137. function appendEmpty(emptyBox,header){
  138. emptyLocation.push(emptyBox);
  139. if(header.is_clicked){
  140. switch (header.type) {
  141. case 1:
  142. score++;
  143. scoreView.text=score;
  144. break;
  145. case 2:
  146. over();
  147. break
  148. }
  149. }
  150. }
  151. var HeaderImages=["person-fs","person-ldh","person-lj"];
  152. /**
  153. *
  154. * @param type 1:正常,2:陷阱
  155. * @constructor
  156. */
  157. function Header(type,parent,on_hidden){
  158. LExtends(this,LSprite,[]);
  159. var self=this;
  160. self.type=type;
  161. self.is_show=false;
  162. var img=HeaderImages[rangeRandom(0,2)];
  163. if(type==1){
  164. self.img=getBitmap(img);
  165. }else{
  166. img="person-b";
  167. self.img=getBitmap(img+"-wet");
  168. }
  169. self.img2=getBitmapData(img+"-wet");
  170. self.addChild(self.img);
  171. var mask =new LSprite();
  172. mask.graphics.drawRect(0,"#00ff00",[0,0,120,130]);
  173. self.img.mask=mask;
  174. self.time=0.4;
  175. self.img.y=125;
  176. self.is_clicked=false;
  177. self.bucket=getBitmap('bucket',0,50);
  178. self.water=getBitmap('water-full');
  179. self.water.y=-50;
  180. self.bucket.y=-60;
  181. self.addChild(self.bucket);
  182. self.addChild(self.water);
  183. self.bucket.visible=false;
  184. self.water.visible=false;
  185. self.show=function(){
  186. self.is_show=true;
  187. LTweenLite.to(self.img,self.time,{y:0,onComplete:self.hide});
  188. }
  189. self.tween = function (img) {
  190. LTweenLite.to(img,.3, {
  191. y: 125, onComplete: function () {
  192. self.is_show = false;
  193. if (on_hidden) {
  194. on_hidden(parent, self);
  195. self.bucket.visible = false;
  196. self.water.visible=false;
  197. }
  198. }
  199. });
  200. };
  201. self.hide = function () {
  202. setTimeout(function(){
  203. self.tween(self.img);
  204. },self.time);
  205. }
  206. self.addEventListener(LMouseEvent.MOUSE_UP, function (e) {
  207. var obj = e.currentTarget;
  208. if (obj.is_show) {
  209. //obj.img.visible = false;
  210. //obj.img2.visible = true;
  211. obj.img.bitmapData=obj.img2;
  212. obj.bucket.visible = true;
  213. obj.water.visible=true;
  214. obj.is_clicked = true;
  215. }
  216. });
  217. }
  218. function Timer() {
  219. var self = this;
  220. base(self, LSprite, []);
  221. self.value = 30;
  222. self.running = false;
  223. self.enable = true;
  224. self.view = new LTextField();
  225. self.view.setType(LTextFieldType.TEXT);
  226. self.view.size = 22;
  227. self.view.weight = "bolder";
  228. self.view.color = "#FFFFFF";
  229. self.view.font = "微软雅黑";
  230. self.view.text = "";
  231. self.addChild(self.view);
  232. self.callback = function () {
  233. };
  234. self.run = function () {
  235. if (self.enable) {
  236. self.view.text =self.value;
  237. if (self.value == 0 && self.callback) {
  238. self.running = false;
  239. self.callback();
  240. self.callback = null;
  241. return;
  242. }
  243. self.value--;
  244. setTimeout(self.run, 1000);
  245. }
  246. }
  247. }
  248. function main() {
  249. if (LGlobal.canTouch) {
  250. LGlobal.stageScale = LStageScaleMode.EXACT_FIT;
  251. LSystem.screen(LStage.FULL_SCREEN);
  252. } else {
  253. LGlobal.resize(380, 650);
  254. }
  255. loadingLayer = new LoadingSample1();
  256. addChild(loadingLayer);
  257. LLoadManage.load(imageData, function (progress) {
  258. loadingLayer.setProgress(progress);
  259. }, gameInit);
  260. addChild(loadingLayer);
  261. }
  262. function gameInit(result) {
  263. dataList = result;
  264. removeChild(loadingLayer);
  265. addChild(mainLayer);
  266. welcome();
  267. }
  268. function reset() {
  269. bgLayer.die();
  270. bgLayer.removeAllChild();
  271. stageLayer.die();
  272. stageLayer.removeAllChild();
  273. mainLayer.removeAllChild();
  274. stageLayer = new LSprite();
  275. bgLayer = new LSprite();
  276. mainLayer.addChild(bgLayer);
  277. is_play = false;
  278. LTweenLite.removeAll();
  279. }
  280. init(1000 / 30, "game", 640, 960, main);