在模仿着做了一个html5手机游戏—兔子踩铃铛,和flash版兔子踩铃铛差的不多吧
效果图:
代码:
index.htm
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="description" content="An HTML5 canvas game."> 6 <meta name="keywords" content="html5, canvas, web, game"> 7 <meta name="author" content="Wang Xin Sheng"> 8 <meta name="apple-mobile-web-app-capable" content="yes"> 9 <meta name="apple-mobile-web-app-status-bar-style" content="black"> 10 <meta name="viewport" id="viewport" content="width = device-width, initial-scale = 1, minimum-scale = 1, maximum-scale = 1, user-scalable=no"> 11 <meta http-equiv="X-UA-Compatible" content="chrome=1"> 12 <meta http-equiv="Pragma" content="no-cache"> 13 <meta http-equiv="Cache-Control" content="no-cache"> 14 <meta equiv="Expires" content="0"> 15 <meta http-equiv="content-script-type" content="text/javascript"> 16 <title>[WXS]兔子跳铃铛</title> 17 <script src="requestNextAnimationFrame.js"></script> 18 <style type="text/css"> 19 html {color:#000;background:#222;margin:0px;} 20 body {-webkit-user-select:none;margin:0px;} 21 #gameWorld{cursor:pointer;} 22 #btn_start{color:white;font-size:38px;font-weight:bold;z-index:999;display:none;background:rgba(150,150,150,0.8);text-align:center;cursor:pointer;} 23 </style> 24 </head> 25 <body> 26 <section> 27 <div style='position:absolute;left:0px;top:0px;width:100%;height:100%;overflow:hidden;' id='btn_start'></div> 28 <canvas id="gameWorld" style="position: absolute; left: 0px; top: 0px;"> 29 <p>You need a <a href="http://www.google.com/chrome">modern browser</a> to view this.</p> 30 </canvas> 31 </section> 32 </body> 33 <script src="CGM010.js"></script> 34 </html>
CGM010.js:
1 ; 2 var gameWorld = new function () { 3 function doSize() { 4 caW = window.innerWidth; 5 caH = window.innerHeight; 6 caObj.width = caW; 7 caObj.height = caH; 8 caObj.style.width = caW + "px"; 9 caObj.style.height = caH + "px"; 10 bellLst = []; 11 birdLst = []; 12 explLst = []; 13 snowLst=[]; 14 rabit = null; 15 birdGenTime = 20; // 每几个生成一个bird 16 genBellCount = 0; 17 bellW = 20;//caH * 0.06; 18 bellH = bellW; 19 bellGap = caH * 0.05; 20 rabitH = 20; 21 rabitW = rabitH; 22 bellDownSpeed = bellH * 0.15; 23 genTop = caH * 0.9; 24 bellOutScreenTop = genTop; 25 birdSpeed = bellW * 0.3; 26 rabitSpeed = 0; 27 rabitA = 0; 28 rabitD = -1; //-1:left,1:right 29 mouseTObj = {x:null,y:null}; 30 rabitOnAirFlg = false; 31 lastFpsUpdateTime = new Date; 32 scoreB = 1; 33 score = 0; 34 scoreOne = 10; 35 flyFlg = false; 36 } 37 function gen(name) { 38 switch(name){ 39 case "bell": 40 while(genTop>=-caH){ 41 if(genBellCount>=birdGenTime){ 42 gen("bird"); 43 } 44 bellLst.push(new bell(genTop, Math.random()*(caW-bellW), bellW, bellH, 0, bellPicLst.length)); 45 genTop -= (bellGap + bellH); 46 genBellCount++; 47 if(genBellCount>=birdGenTime) 48 genTop += bellGap - bellH * 0.5; 49 } 50 break; 51 case "rabit": 52 rabit = new rabitObj(caH - rabitH,caW * 0.5 - rabitW * 0.5,rabitW,rabitH,0,caH); 53 break; 54 case "bird": 55 birdLst.push(new bird(genTop, Math.random()*(caW-bellW), bellW, bellH, 0, birdPicLst.length * 0.5,-1)); 56 genTop -= (bellGap + bellH); 57 genBellCount=0; 58 break; 59 case "snow": 60 for(var i = 0;i<=120;i++){ 61 snowLst.push({x:Math.random()*caW,y:Math.random()*(caH*0.8),r:Math.random()*1.5}); 62 } 63 break; 64 } 65 } 66 function picIsLoaded() { 67 return toLoadPicCount <= loadPicCount ? true : false; 68 } 69 function loadPics() { 70 for (var i = 0; i < rabitPicLst.length; i++) { 71 var imgTmp = new Image(); 72 imgTmp.src = rabitPicLst[i]; 73 imgTmp.onload = loadedImg; 74 rabitPicOLst.push(imgTmp); 75 } 76 for (var i = 0; i < birdPicLst.length; i++) { 77 var imgTmp = new Image(); 78 imgTmp.src = birdPicLst[i]; 79 imgTmp.onload = loadedImg; 80 birdPicOLst.push(imgTmp); 81 } 82 for (var i = 0; i < bellPicLst.length; i++) { 83 var imgTmp = new Image(); 84 imgTmp.src = bellPicLst[i]; 85 imgTmp.onload = loadedImg; 86 bellPicOLst.push(imgTmp); 87 } 88 for (var i = 0; i < explPicLst.length; i++) { 89 var imgTmp = new Image(); 90 imgTmp.src = explPicLst[i]; 91 imgTmp.onload = loadedImg; 92 explPicOLst.push(imgTmp); 93 } 94 } 95 function loadedImg() { 96 //console.log(loadPicCount, toLoadPicCount); 97 return ++loadPicCount; 98 } 99 function drawObject(name){ 100 switch(name){ 101 case "bell": 102 caCt.save(); 103 for (var i=0;i<bellLst.length ;i++ ) 104 { 105 caCt.globalAlpha = bellLst[i].a; 106 caCt.drawImage(bellPicOLst[bellLst[i].si],bellLst[i].l,bellLst[i].t,bellLst[i].w,bellLst[i].h); 107 } 108 caCt.restore(); 109 break; 110 case "rabit": 111 //caCt.save(); 112 caCt.drawImage(rabitPicOLst[rabit.si],rabit.l,rabit.t,rabit.w,rabit.h); 113 //caCt.restore(); 114 //caCt.drawImage(rabitPicOLst[rabit.si],rabit.l,rabit.t-jumpH,rabit.w,rabit.h); 115 break; 116 case "bird": 117 caCt.save(); 118 for (var i=0;i<birdLst.length ;i++ ) 119 { 120 caCt.globalAlpha = birdLst[i].a; 121 caCt.drawImage(birdPicOLst[birdLst[i].si],birdLst[i].l,birdLst[i].t,birdLst[i].w,birdLst[i].h); 122 } 123 caCt.restore(); 124 break; 125 case "expl": 126 caCt.save(); 127 for (var i=0;i<explLst.length ;i++ ) 128 { 129 caCt.drawImage(explPicOLst[bellLst[i].si],explLst[i].l,explLst[i].t,explLst[i].w,explLst[i].h); 130 caCt.fillStyle = "white"; 131 caCt.font="20px Arial"; 132 caCt.textAlign="center"; 133 caCt.textBaseline="middle"; 134 caCt.fillText(explLst[i].s,explLst[i].l+explLst[i].w*0.5,explLst[i].t+explLst[i].h*0.5); 135 } 136 caCt.restore(); 137 break; 138 case "words": 139 caCt.save(); 140 caCt.fillStyle = "white"; 141 caCt.font="20px Arial"; 142 caCt.textAlign="left"; 143 caCt.textBaseline="top"; 144 caCt.fillText("得分: "+score,0,0); 145 caCt.fillText("倍数: X"+scoreB,0,25); 146 caCt.font="13px Arial"; 147 caCt.textAlign="right"; 148 caCt.textBaseline="bottom"; 149 caCt.fillText("Powered by Wang Xinsheng",caW,caH); 150 caCt.restore(); 151 break; 152 case "snow": 153 caCt.save(); 154 caCt.fillStyle = "gray"; 155 for (var i=0;i<snowLst.length ;i++ ) 156 { 157 caCt.beginPath(); 158 caCt.arc(snowLst[i].x, snowLst[i].y, snowLst[i].r, 0, Math.PI * 2, true); 159 caCt.closePath(); 160 caCt.fill(); 161 } 162 caCt.restore(); 163 break; 164 } 165 } 166 function birdFly(){ 167 for (var i=0;i<birdLst.length ;i++ ) 168 { 169 birdLst[i].fly(birdSpeed, birdLst[i].d, 0, caW); 170 birdLst[i].change(); 171 } 172 } 173 function rabitRun(){ 174 if(this.l!=mouseTObj.x && !rabitOnAirFlg){ 175 rabit.run(rabit.w*0.5,mouseTObj); 176 } 177 } 178 function isTouchBell(){ 179 var touchBellFlg = false; 180 var tBellIndex = 0; 181 var touchBirdFlg = false; 182 var tBirdIndex = 0; 183 for (var i=0;i<bellLst.length ;i++ ) 184 { 185 touchBellFlg = bellLst[i].isTouch(rabit); 186 if(touchBellFlg){ 187 tBellIndex = i; 188 break; 189 } 190 } 191 for (var i=0;i<birdLst.length ;i++ ) 192 { 193 touchBirdFlg = birdLst[i].isTouch(rabit); 194 if(touchBirdFlg){ 195 tBirdIndex = i; 196 break; 197 } 198 } 199 if(touchBellFlg || touchBirdFlg){ 200 flyFlg = true; 201 rabit.upAcc = bellW * 1.5; 202 if(touchBellFlg){ 203 bellLst[tBellIndex].aSpeed = 0.4; 204 explLst.push(new expl((bellLst[tBellIndex].t + bellLst[tBellIndex].h * 0.5)-135*0.5,(bellLst[tBellIndex].l + bellLst[tBellIndex].w * 0.5)-135*0.5,135,135,0,explPicLst.length,"+"+scoreOne)); 205 score +=scoreOne * scoreB; 206 } 207 if(touchBirdFlg){ 208 birdLst[tBirdIndex].aSpeed = 0.4; 209 explLst.push(new expl((birdLst[tBirdIndex].t + birdLst[tBirdIndex].h * 0.5)-135*0.5,(birdLst[tBirdIndex].l + birdLst[tBirdIndex].w * 0.5)-135*0.5,135,135,0,explPicLst.length,"X"+(++scoreB))); 210 } 211 bellDownSpeed = ((caH-rabit.t)>(caH * 0.8)) ? (caH * 0.5) : (caH-rabit.t) * 0.1; 212 }else if(rabit.upAcc<=0){ 213 if(rabit.upAcc<0 && rabit.t>caH * 0.5 && rabit.upAcc> -1*caH*1.5 && flyFlg ){ 214 bellDownSpeed = rabit.upAcc; 215 }else{ 216 bellDownSpeed = bellH * 0.15; 217 } 218 } 219 } 220 function rabitJump(){ 221 if(rabitOnAirFlg){ 222 rabit.jump(Math.abs(mouseTObj.x-rabit.l)*0.2,mouseTObj); 223 224 isTouchBell(); 225 226 if(rabit.t>=(caH-rabit.h)) 227 { 228 rabit.t = caH-rabit.h; 229 rabit.upAcc=0; 230 rabitOnAirFlg = false; 231 bellDownSpeed = bellH * 0.15; 232 flyFlg = false; 233 if(score!=0){ 234 finScore = score; 235 bellLst = []; 236 birdLst = []; 237 explLst = []; 238 genBellCount = 0; 239 genTop = caH * 0.9; 240 bellOutScreenTop = genTop; 241 birdSpeed = bellW * 0.3; 242 rabitSpeed = 0; 243 mouseTObj = {x:null,y:null}; 244 lastFpsUpdateTime = new Date; 245 scoreB = 1; 246 score = 0; 247 scoreOne = 10; 248 snowLst=[]; 249 gen("snow"); 250 gen("bell"); 251 document.title = "我摘到了 " + finScore + " 个铃铛,你呢? —— 兔子踩铃铛[wxs]"; 252 document.getElementById("btn_start").style.display="inline"; 253 document.getElementById("btn_start").innerHTML = "<div style='margin:10px 0px;'>兔子踩铃铛<br />我摘到了<br /><br /><span style='color:#FFC549;'>" + finScore + "</span><br /><br />个铃铛<br /><br />右上方微信分享<br /><br />再玩一次</div>"; 254 } 255 } 256 } 257 } 258 function bellFallDown(){ 259 var delFlg =false; 260 genTop += bellDownSpeed; 261 for (var i=0;i<bellLst.length ;i++ ) 262 { 263 delFlg = bellLst[i].fallDown(bellDownSpeed, bellOutScreenTop); 264 delFlg && bellLst.splice(i,1); 265 if(!delFlg && bellLst[i].aSpeed!=0){ 266 delFlg = bellLst[i].disappear(bellLst[i].aSpeed); 267 delFlg && bellLst.splice(i,1); 268 } 269 //delFlg && console.log("bell",bellLst); 270 } 271 delFlg =false; 272 for (var i=0;i<birdLst.length ;i++ ) 273 { 274 delFlg = birdLst[i].fallDown(bellDownSpeed, bellOutScreenTop); 275 delFlg && birdLst.splice(i,1); 276 if(!delFlg && birdLst[i].aSpeed!=0){ 277 delFlg = birdLst[i].disappear(birdLst[i].aSpeed); 278 delFlg && birdLst.splice(i,1); 279 } 280 //delFlg && console.log("bird",birdLst); 281 /*if(delFlg) 282 bellDownSpeed = (bellDownSpeed + 1)>=(bellH * 0.3)?(bellH * 0.3):(bellDownSpeed + 1);*/ 283 } 284 if(rabitOnAirFlg && !(rabit.upAcc<0 && rabit.t>caH * 0.5 && rabit.upAcc> -1*caH*1.5 && flyFlg )) 285 rabit.t += bellDownSpeed * 0.5; 286 } 287 function explChange(){ 288 for (var i=0;i<explLst.length ;i++ ) 289 { 290 if(explLst[i].over){ 291 explLst.splice(i,1); 292 }else{ 293 explLst[i].change(); 294 } 295 } 296 } 297 function animate(time) { 298 if (picIsLoaded()) { 299 var now = (+new Date); 300 if (now - lastFpsUpdateTime > 100) { 301 lastFpsUpdateTime = now; 302 if(rabitOnAirFlg){ 303 //bellDownSpeed = 0; 304 }else if(bellDownSpeed == 0){ 305 bellDownSpeed = bellH * 0.15; 306 } 307 308 caCt.save(); 309 caCt.beginPath(); 310 // 指定渐变区域 311 var grad = caCt.createLinearGradient(0,0, 0,caH); 312 // 指定几个颜色 313 grad.addColorStop(0,'rgb(0, 0, 69)'); 314 grad.addColorStop(1,'rgb(0, 0, 165)'); 315 // 将这个渐变设置为fillStyle 316 caCt.fillStyle = grad; 317 // 绘制矩形 318 caCt.rect(0,0, caW,caH); 319 caCt.fill(); 320 caCt.restore(); 321 /*caCt.fillStyle = "#fff"; 322 caCt.fillRect(0, 0, caW, caH);*/ 323 324 birdFly(); 325 rabitRun(); 326 rabitJump(); 327 explChange(); 328 329 drawObject("snow"); 330 drawObject("bell"); 331 drawObject("bird"); 332 drawObject("rabit"); 333 drawObject("expl"); 334 drawObject("words"); 335 336 bellFallDown(); 337 338 genTop>=-caH && gen("bell"); 339 } 340 }else{ 341 caCt.save(); 342 caCt.fillStyle = "#fff"; 343 caCt.fillRect(0, 0, caW, caH); 344 caCt.fillStyle = "black"; 345 caCt.font="20px Arial"; 346 caCt.textAlign="left"; 347 caCt.textBaseline="top"; 348 caCt.fillText("正在加载游戏......",0,caH*0.5); 349 caCt.restore(); 350 } 351 window.requestNextAnimationFrame(animate); 352 } 353 function eventBund(){ 354 if(!v){ 355 document.addEventListener("mousemove", onMouseMove, false); 356 document.addEventListener("click", onMouseClick, false); 357 }else{ 358 caObj.addEventListener("touchstart", onTouchStart, false); 359 caObj.addEventListener("touchmove", onTouchMove, false); 360 caObj.addEventListener("touchend", stopEvent, false); 361 caObj.addEventListener("touchcancel", stopEvent, false); 362 caObj.addEventListener("gesturestart", stopEvent, false); 363 caObj.addEventListener("gesturechange", stopEvent, false); 364 caObj.addEventListener("gestureend", stopEvent, false); 365 } 366 document.getElementById("btn_start").addEventListener("click", onStart, false); 367 } 368 function onStart(e){ 369 document.getElementById("btn_start").style.display="none"; 370 } 371 function onMouseMove(e){ 372 mouseTObj.x = e.pageX; 373 mouseTObj.y = e.pageY; 374 if(mouseTObj.x<rabit.l){ 375 rabit.d = -1; 376 }else{ 377 rabit.d = 1; 378 } 379 } 380 function onTouchMove(e){ 381 e.preventDefault(); 382 var touch = e.touches[0]; 383 mouseTObj.x = touch.pageX; 384 mouseTObj.y = touch.pageY; 385 if(mouseTObj.x<rabit.l){ 386 rabit.d = -1; 387 }else{ 388 rabit.d = 1; 389 } 390 return false; 391 } 392 function onTouchStart(e){ 393 e.preventDefault(); 394 var touch = e.touches[0]; 395 mouseTObj.x = touch.pageX; 396 mouseTObj.y = touch.pageY; 397 if(mouseTObj.x<rabit.l){ 398 rabit.d = -1; 399 }else{ 400 rabit.d = 1; 401 } 402 if(!rabitOnAirFlg){ 403 rabitOnAirFlg = true; 404 //console.log(rabitOnAirFlg); 405 bellOutScreenTop = caH*2; 406 rabit.upAcc = bellW*2.1; 407 } 408 return false; 409 } 410 function onMouseClick(e){ 411 if(!rabitOnAirFlg){ 412 rabitOnAirFlg = true; 413 //console.log(rabitOnAirFlg); 414 bellOutScreenTop = caH*1.5; 415 rabit.upAcc = bellW*2.1; 416 } 417 } 418 function stopEvent(e) { e.preventDefault(); e.stopPropagation(); } 419 var v = navigator.userAgent.toLowerCase().indexOf("android") != -1 || navigator.userAgent.toLowerCase().indexOf("iphone") != -1 || navigator.userAgent.toLowerCase().indexOf("ipad") != -1, 420 caW = window.innerWidth, 421 caH = window.innerHeight, 422 caObj = document.getElementById("gameWorld"), 423 caCt = caObj.getContext("2d") 424 bellLst = [], 425 birdLst = [], 426 explLst = [], 427 rabit = null, 428 birdPicLst = ["img/bird_left_fly0.png", "img/bird_left_fly1.png", "img/bird_left_fly2.png", "img/bird_right_fly0.png", "img/bird_right_fly1.png", "img/bird_right_fly2.png"], 429 rabitPicLst = ["img/rabit_left_stop.png", "img/rabit_on_ground_left_jump0.png", "img/rabit_on_ground_left_jump1.png", "img/rabit_right_stop.png", "img/rabit_on_ground_right_jump0.png", "img/rabit_on_ground_right_jump1.png", "img/rabit_on_air_left_stop.png", "img/rabit_on_air_left_down.png", "img/rabit_on_air_right_stop.png", "img/rabit_on_air_right_down.png"], 430 bellPicLst = ["img/bell_ok.png"], 431 explPicLst = ["img/bell_explode1.png","img/bell_explode2.png"], 432 rabitPicOLst = [], 433 birdPicOLst = [], 434 bellPicOLst = [], 435 explPicOLst = [], 436 loadPicCount = 0, 437 toLoadPicCount = rabitPicLst.length + birdPicLst.length + bellPicLst.length + explPicLst.length; 438 birdGenTime = 20, // 每几个生成一个bird 439 genBellCount = 0, 440 genTop = caH, 441 jumpH = 0, 442 downH = 0, 443 bellW = 0, 444 bellH = 0, 445 bellGap = 0, 446 rabitH = 0, 447 rabitW = 0, 448 birdSpeed = 0, 449 rabitSpeed = 0, 450 rabitA = 0, 451 rabitD = 0, //-1:left,1:right 452 rabitOnAirFlg = false, 453 mouseTObj = {x:null,y:null}, 454 bellDownSpeed = 0, 455 bellOutScreenTop = caH, 456 lastFpsUpdateTime = new Date, 457 scoreB = 1, 458 score = 0, 459 scoreOne = 10, 460 flyFlg = false, 461 finScore = 0, 462 snowLst=[] 463 ; 464 this.init = function () { 465 //*********init size and vars******* 466 doSize(); 467 //*********load images********* 468 loadPics(); 469 //*********gen bell and rabit******* 470 gen("snow"); 471 gen("bell"); 472 gen("rabit"); 473 //console.log(genTop,bellGap,birdLst); 474 //*********Event*********** 475 eventBund(); 476 //*********Gen*********** 477 //*********animate*********** 478 animate(); 479 } 480 } 481 /* 482 * bell object 483 */ 484 function bell(top, left, width, height, si, maxSI) { 485 this.t = top; // 高度 486 this.l = left; // 左边距 487 this.a = 1; // 透明度 488 this.aSpeed = 0; // 透明度 489 this.w = width; // 宽度 490 this.h = height; // 高度 491 this.si = si; // 显示图片帧数 492 this.msi = maxSI // 最多显示图片帧数 493 } 494 /* 495 * function : to disappear the bell 496 * return : is disappeared? 497 */ 498 bell.prototype.disappear = function (speed) { 499 this.a -= speed; 500 return this.a <= 0 ? true : false; 501 } 502 /* 503 * function : to fall down the bell 504 * return : is out of the screen? 505 */ 506 bell.prototype.fallDown = function (speed, maxTop) { 507 this.t += speed; 508 return this.t >= (maxTop - this.h * 3) ? this.disappear(speed * 0.1) : false; 509 } 510 /* 511 * function : change the picture 512 * return : void 513 */ 514 bell.prototype.change = function () { 515 this.si = ++this.si % this.msi; 516 } 517 /* 518 * function : judge wheather the rabit touchs the bell 519 * return : void 520 */ 521 bell.prototype.isTouch = function (rabit) { 522 if(this.aSpeed==0){ 523 if((rabit.l+rabit.w*0.5)>=this.l*0.9 && (rabit.l+rabit.w*0.5)<=(this.l + this.w)*1.1 && 524 (rabit.t+rabit.h*0.5)>=this.t*0.9 && (rabit.t+rabit.h*0.5)<=(this.t + this.h)*1.1){ 525 return true; 526 } 527 } 528 return false; 529 } 530 /* 531 * bird object 532 */ 533 function bird(top, left, width, height, si, maxSI, direction) { 534 this.t = top; // 高度 535 this.l = left; // 左边距 536 this.a = 1; // 透明度 537 this.aSpeed = 0; // 透明度 538 this.w = width; // 宽度 539 this.h = height; // 高度 540 this.si = si; // 显示图片帧数 541 this.msi = maxSI // 最多显示图片帧数 542 this.d = direction; // 方向 -1:left;1:right 543 } 544 bird.prototype = new bell; 545 /* 546 * function : let the bird fly 547 * return : void 548 */ 549 bird.prototype.fly = function (speed, direction, minLeft, maxRight) { 550 var nextLeft = this.l + (speed * direction); 551 if (nextLeft <= minLeft || 552 nextLeft >= maxRight - this.w) { 553 this.d *= -1; 554 this.l = nextLeft <= minLeft ? 0 : (maxRight - this.w); 555 this.si = nextLeft <= minLeft ? 0 : (this.msi); 556 } else { 557 this.l = nextLeft; 558 } 559 } 560 /* 561 * function : change the picture 562 * return : void 563 */ 564 bird.prototype.change = function () { 565 if (this.d > 0) { 566 // right 567 this.si = (++this.si % this.msi)+this.msi; 568 } else { 569 this.si = ++this.si % this.msi; 570 } 571 } 572 /*expl*/ 573 function expl(top,left,width,height,si,msi,score){ 574 this.t=top; 575 this.l=left; 576 this.w=width; 577 this.h=height; 578 this.si=si; 579 this.msi=msi; 580 this.s=score; 581 this.over =false; 582 } 583 /* 584 * change the pic and overFlg 585 */ 586 expl.prototype.change = function () { 587 if((this.si+1)==this.msi){ 588 this.over = true; 589 return; 590 } 591 this.si=(this.si+1)%this.msi; 592 } 593 594 /*rabit*/ 595 function rabitObj(top,left,width,height,si,direction,maxH) { 596 this.t = top; // 高度 597 this.l = left; // 左边距 598 this.a = 1; // 透明度 599 this.w = width; // 宽度 600 this.h = height; // 高度 601 this.si = si; // 显示图片帧数 602 this.d = direction; // 方向 -1:left;1:right 603 this.upAcc = 0; // up a 604 this.maxH = maxH; 605 } 606 rabitObj.prototype.jump = function(speed,mouseObj){ 607 this.t -= this.upAcc; 608 this.upAcc-=this.h*0.35; 609 if(this.d<0){ 610 //left 611 this.l -= speed; 612 if(this.upAcc>0) 613 { 614 this.si=1; 615 }else if(this.upAcc>-1*this.h*0.5 && this.upAcc<this.h*0.5){ 616 this.si = 6; 617 }else{ 618 this.si = 7; 619 } 620 }else{ 621 this.l += speed; 622 if(this.upAcc>0) 623 { 624 this.si=4; 625 }else if(this.upAcc>-1*this.h*0.5 && this.upAcc<this.h*0.5){ 626 this.si = 8; 627 }else{ 628 this.si = 9; 629 } 630 } 631 } 632 rabitObj.prototype.run = function (speed, mouseObj) { 633 if(this.d<0){ 634 //left 635 this.l -= speed; 636 if(mouseObj.x>=this.l) 637 { 638 this.l = mouseObj.x; 639 this.si=0; 640 }else{ 641 this.si = 0+(++this.si%3); 642 } 643 }else{ 644 this.l += speed; 645 if(mouseObj.x<=this.l) 646 { 647 this.l = mouseObj.x; 648 this.si=3; 649 }else{ 650 this.si = 3+(++this.si%3); 651 } 652 } 653 } 654 655 onload = function () { 656 gameWorld.init(); 657 }
优快云下载地址: