рдПрдХ рд▓реЗрдЦ "рд╕реАрдЦрдиреЗ рдХреА рд╕рд╛рдордЧреНрд░реА" рдХреЗ рд╕рд╛рде рдЯреИрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдЦрд░реЛрдВрдЪ рд╕реЗ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЬрдЯрд┐рд▓ (рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП) рднреМрддрд┐рдХ рдЗрдВрдЬрди рдирд╣реАрдВ рд▓рд┐рдЦреЗрдВрдЧреЗ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рддреБрд░рдВрдд рдПрдХ рдореБрд╢реНрдХрд┐рд▓ рдЦреЗрд▓ рдирд╣реАрдВ рд╣реИ (рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдБрдк рдЪреБрдирд╛)ред рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╡рд╛рд▓рд╛ рд▓реЗрдЦ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдХрд╛рдо рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐ рдпрд╣ рд╕рдм рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХреИрд╕реЗ рд╣реЛрдЧрд╛, рдФрд░ рд╕рдмрд╕реЗ рд╕реБрдВрджрд░ (рд╕рд╣реА) рдХреЛрдб рдХреЗ рд╕рд╛рде (рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рдЬреЛ рдмреЗрд╣рддрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЖрдк рдЗрд╕рдореЗрдВ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗ рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ)ред "рдФрд░ рдЬрд╡рд╛рдм рдореЗрдВ рдкрдХреЗ рдЯрдорд╛рдЯрд░ рдЙрдбрд╝ рдЧрдП .."ред рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
(рдЬреЛ рдпрд╣рд╛рдБ рддрдХ рд╕рд╣реА рдкрдврд╝рддреЗ рд╣реИрдВ, рдХреБрдХреАрдЬрд╝ рдХреЛ рдкрдХрдбрд╝реЗрдВ, рдмрд╛рдПрдБ рдФрд░ рджрд╛рдПрдБ рддреАрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗрдВ):
-
рдпрд╣реА рд╣реЛрдЧрд╛: рднрд╛рдЧ рдПрдХ рдореЗрдВ-
рдФрд░ рдпрд╣ (рджреЗрд╡-рд╡рд┐рдзрд╛) рд╣реИIndex.html рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
рдХреЛрдб рдХреЛ рджреЗрдЦреЛ<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <link rel="stylesheet" href="css/main.css" type="text/css" /> </head> <body> <div id="container"> <div id="bg"></div> <canvas id="canvas" width="900" height="600"></canvas> </div> <script src="js/LAB.min.js" type="text/javascript"></script> <script type="text/javascript"> $LAB .script("js/engine/CustomEvent.js").wait() .script("js/engine/Body.js").wait() .script("js/engine/World.js") .script("js/Bonus.js") .script("js/EnemyCloud.js") .script("js/Hero.js") .script("js/mainApp.js"); </script> </body> </html>
рд╣рдо рд╕рдорд╛рдкрди рдмреЙрдбреА рдЯреИрдЧ рд╕реЗ рдкрд╣рд▓реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВредрд╕рд░ рдореЗрдВ рдХреНрдпреЛрдВ рдирд╣реАрдВ? рдЬреИрд╕реЗ рд╣реА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреИрдЧ рдХреЛ рджреЗрдЦрддрд╛ рд╣реИ, рд╡рд╣ рдкрд▓ рд▓реЛрдб рд╣реЛрдиреЗ рддрдХ рдЖрдЧреЗ рдХреЗ рдкреЗрдЬ рдХрдВрд╕реНрдЯреНрд░рдХреНрд╢рди рдХреЛ рдмреНрд▓реЙрдХ рдХрд░ рджреЗрддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдЖрдкрдХреЗ рдкрд╛рд╕ рдмрд╕ рдПрдХ рд╕рдлреЗрдж рд╕реНрдХреНрд░реАрди рд╣реЛрдЧреА (рдФрд░ рдпрд╣рд╛рдБ рдЧреАрдЧрд╛рдмрд┐рдЯ рдЗрдВрдЯрд░рдиреЗрдЯ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ)ред
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдмрд╣реБрдд рд╕рд╛рд░реА рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВред рдЖрджрд░реНрд╢ рд░реВрдк рдореЗрдВ, рд╕рдм рдХреБрдЫ рдХреЛ рдПрдХ рдлрд╛рдЗрд▓ рдореЗрдВ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╛ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдПрдХ рдЬреЛрдбрд╝реА рдХреЗ рдЕрдзрд┐рдХрддрдо рд╕рдореВрд╣ред рд╣рдо рдмрд╛рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП LAB.js рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рд╣рдо рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдлрд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВредрд╣рдо LAB.js рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (рдпрд╛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЖрдк LazyLoad.js, рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ)ред рдпрд╣ рд╣рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХреЛ рдпрд╛рдж рд╣реИ, рдпрд╣ рдКрдкрд░ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдЯреИрдЧ, рдирд┐рд░реНрдорд╛рдг рд╕реНрдЯреЙрдк рдкрд░, рдЕрд░реНрдерд╛рддреН рд╕рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░ рдореЗрдВ рд▓реЛрдб рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ) рдкреНрд▓рд╕ рд╣рдо рд▓реЛрдбрд┐рдВрдЧ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреАрдХреНрд╖рд╛ рдлрд╝рдВрдХреНрд╢рди)ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ, рдХрд╣рддреЗ рд╣реИрдВ, jQuery рдкреНрд▓рдЧрдЗрди, рдЬрдм jQuery рдиреЗ рдЕрднреА рддрдХ рд▓реЛрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рд╣рдо jQuery рдХреЛ рд░реЛрдХрддреЗ рд╣реИрдВ, рдФрд░ рдЬреИрд╕реЗ рд╣реА рдпрд╣ рд▓реЛрдб рд╣реЛрддрд╛ рд╣реИ, рд╕рдм рдХреБрдЫ рдЖрдЧреЗ рдмрдврд╝ рдЬрд╛рдПрдЧрд╛ред
MainApp.js рдлрд╝рд╛рдЗрд▓ рдкрд░ рдЬрд╛рдПрдБ
рдХреЛрдб рдХреЛ рджреЗрдЦреЛ (function() { var game = { images: [ { url: 'images/en_blue.png' }, { url: 'images/en_white.png' }, { url: 'images/en_red.png' } ], loadCount: 0, load: function() { var self = this, max = this.images.length; for (var i = max; i--;) { this.images[i].img = new Image(); this.images[i].img.onload = function () { self.loadCount++; if (self.loadCount == max) { self.loadComplete(); } } this.images[i].img.src = this.images[i].url; } }, loadComplete: function() { this.initControll().initGame().startLoop(); }, canvas: document.getElementById('canvas'), config: { fps: 1000/30, stageW: 900, stageH: 600 }, bodies: [], enemies: [], bonuses: [], initControll: function() { var handlers = this.controllHandlers(); if (document.documentElement.addEventListener) { document.body.addEventListener('keydown', handlers.keyDown); document.body.addEventListener('keyup', handlers.keyUp); } else { document.body.attachEvent('keydown', handlers.keyDown); document.body.attachEvent('keyup', handlers.keyUp); } return this; }, controllHandlers: function() { var self = this; return { keyDown: function(e) { self.keyDownControll(e.keyCode); }, keyUp: function(e) { self.keyUpControll(e.keyCode); } } }, initGame: function() {
рдЕрдВрдХ рдкрд░:
рд╣рдо рдПрдХ рдЕрдирд╛рдо рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рд╕рдм рдХреБрдЫ рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред
рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рджрд╛рдпрд░рд╛ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдПрдХ рдЪрд░ рдмрд╛рд╣рд░ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдЧрд╛ (рдпрд╣ рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рд░реЛрдХ рдирд╣реАрдВ рджреЗрдЧрд╛)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рдЕрднреА рднреА рдПрдХ рдЪрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рддреБрд░рдВрдд рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
function myFunc() { a = 123; }
рдпрд╣ рд╡реИрд╢реНрд╡рд┐рдХ (рд╡реИрд╢реНрд╡рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рдВрдкрддреНрддрд┐) рдмрди рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рд╡рд╣реА рдЪреАрдЬ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд▓рд┐рдЦреЗрдВрдЧреЗ
function myFunc() { window.a = 123; }
рдЬреЛ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рдПрдХ рдирд╛рдо рд╕рдВрдШрд░реНрд╖ рд╣реЛрдЧрд╛ред
рдЦреЗрд▓ рд╣реА рдЦреЗрд▓ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдЕрд░реНрдерд╛рдд рдпрд╣рд╛рдБ рд╣рдо рдирд╛рдо рд╕реНрдерд╛рди "рдЦреЗрд▓" рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рд╕рдм рдХрд╣рд╛рдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ? рдпрд╣ рд╕рд╣реА рд╣реИ, рдкреВрд░реНрд╡-рд▓реЛрдбрд┐рдВрдЧ рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рдеред рдЗрд╕рд▓рд┐рдП, рдХреЗрд╡рд▓ рдПрдХ рдЪреАрдЬ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдмреБрд▓рд╛рдпрд╛ рд╣реИ рд╡рд╣ рд╣реИ
game.load();
рд╣рдо рдЗрд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ:
var self = this, max = this.images.length; for (var i = max; i--;) {
рддреЛ: рд╣рдорд╛рд░реА рд╡рд╕реНрддреБ (рдЦреЗрд▓) рдХреЗ рд▓рд┐рдП рд▓рд┐рдВрдХ рдХреЛ рдмрдЪрд╛рдпрд╛ред
рдпрд╣ рд╣рдореЗрдВ рдХрд╣рд╛рдВ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИ?рдпрд╣ рдЙрд╕ рд╕рдордп рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдлрд╝рдВрдХреНрд╢рди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрд╕реА рдХреЙрд▓ рдХреЛ рдпрд╛рдж рдХрд░реЗрдВ, aplly рдЬреЛ рдХреЙрд▓ рд╕рдВрджрд░реНрдн рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреА рд╣реИред рд╕рдВрджрд░реНрдн, рдЕрд░реНрдерд╛рддреН, рд╡рд╕реНрддреБ рдЗрд╕ рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреА рд╣реИред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдСрдирд▓реЛрдб рдлрд╝рдВрдХреНрд╢рди рджреЗрдЦрддреЗ рд╣реИрдВ, рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ рдЪрд╛рд▓реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ HTMLImageElement (рдЫрд╡рд┐ рдХреЛ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛) рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░реЗрдЧрд╛ред
рд╣рдо рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рд╕рд░рдгреА рдХреА рд▓рдВрдмрд╛рдИ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдлрд╝реЙрд░реНрдо рдХреЛ рдПрдХ рд▓реВрдк рд▓рд┐рдЦрддреЗ рд╣реИрдВ: рдХреЗ
for (var i = max; i--;) {
рд╕рд╛рдЗрдХрд┐рд▓ рдХреА рдЧрддрд┐рд╕рдмрд╕реЗ рдзреАрдорд╛ рдЪрдХреНрд░ for in
(рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдХреНрдпреЛрдВ), рд╕рд╛рде рд╣реА рдпрд╣ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреНрд░рдо рдореЗрдВ рдЧреБрдгреЛрдВ рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдЕрдХреНрд╕рд░ рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХрд╛ рдХрд╛рд░рдг рдмрди рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рддрдм рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдЖрдкрдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рднреА (рдФрд░ рдЬреНрдЮрд╛рдд рдирд╣реАрдВ) рдЧреБрдгреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЕрдЧрд▓рд╛ рд░реВрдк рдХрд╛ рдПрдХ рдЪрдХреНрд░ рд╣реИ
for (var i = 0; i<this.images.length; i++;) {
рдпрд╣рд╛рдБ, рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреА рд▓рдВрдмрд╛рдИ рдХреА рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХрд░рддреЗ рд╣реИрдВ (рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЗрд╕рд╕реЗ рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рд╡реЗ рд▓рдЧрд╛рддрд╛рд░ рдРрд╕рд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдБрдХрд┐ (рдореЗрд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ, рдПрдХ рд╕рдорд╛рдкреНрдд рд╕рд░рдгреА рдХреЛ рдЫрд╛рдБрдЯрддреЗ рд╣реБрдП) рдХреЗрд╡рд▓ рдорд╛рдорд▓реЛрдВ рдХреЗ рдПрдХ рдмрд╣реБрдд рдЫреЛрдЯреЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ, рдпрд╣ рд▓рдВрдмрд╛рдИ рдмрджрд▓ рд╕рдХрддреА рд╣реИред рдпрд╛рддреНрд░рд╛ рдХрд╛ рд╕рдордп)ред
рдЕрдЧрд▓рд╛ (рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ) рдЬрд╛рддрд╛ рд╣реИ
for (var i = 0, max = this.images.length; i<max; i++;) {
рд╣рдореЗрдВ рд▓рдВрдмрд╛рдИ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдорд┐рд▓рддреА рд╣реИред
рдЦреИрд░, рдЕрдВрдд рдореЗрдВ (рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдЕрдВрдд рд╕реЗ рд╕рд░рдгреА рдкрд░ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рд╢реБрд░реВ рд╕реЗ рддреЗрдЬ рд╣реИ), рдареАрдХ рд╣реИ, рд╣рдо рд╣реИрдВ:
for (var i = this.images.length; i>0; i--;) {
рдФрд░ рднреА рд╕реБрдВрджрд░:
for (var i = this.images.length; i--;) {
рд╣рдо рдЖрдЧреЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рд╣рдордиреЗ рдСрдирд▓реЛрдб рд╣реИрдВрдбрд▓рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рдж рд╣рдо рдЪрд┐рддреНрд░ рд▓реЛрдб рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ
this.images[i].img.src = this.images[i].url;
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдШрдЯрдирд╛ рдХреЗ рд╢реНрд░реЛрддрд╛, рдлрд┐рд░ рдШрдЯрдирд╛редрдпрджрд┐ рдЖрдк рдЗрди рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рдХреНрд░рдо рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ (рд╕рдм рдХреБрдЫ рдареАрдХ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рддреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЪрд┐рддреНрд░ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдорд┐рд▓реЗрдЧрд╛ рдЬрдм рддрдХ рдХрд┐ рджреБрднрд╛рд╖рд┐рдпрд╛ рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪрддрд╛) рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рд▓рдЧрднрдЧ рд╣рд░ рдЬрдЧрд╣ред рд╣рд╛рдВ, рдЖрдкрдиреЗ рдпрд╣ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рд╣реИ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА IE8 рдЖрдкрдХреЛ рд╡рд╣ рд╕рдм рдХреБрдЫ рдмрддрд╛ рджреЗрдЧрд╛ рдЬреЛ рд╡рд╣ рдЖрдкрдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЗрд╕рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВред
рдбрд╛рдЙрдирд▓реЛрдб рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░, рдирд┐рдпрдВрддреНрд░рдг рдХреЛ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреБрдЫ рдЧреЗрдо рдбреЗрдЯрд╛, рдЪрдХреНрд░ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ
loadComplete: function() { this.initControll().initGame().startLoop(); }
рд╕реБрдВрджрд░ рдФрд░
рд╕рд░рд▓ ред
рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдХреЛрдб рдпрд╣ рднреА рджрд┐рдЦрд╛рддрд╛ рд╣реИ:
canvas: document.getElementById('canvas'), config: { fps: 1000/30, stageW: 900, stageH: 600 }
рд╣рдо HTML рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬреЛ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗредDOM рдСрдкрд░реЗрд╢рдВрд╕ рд╕рдмрд╕реЗ рдзреАрдореЗ рд╣реЛрддреЗ рд╣реИрдВред рдпрджрд┐ рдореИрдВ рд╣рд░ рдлреНрд░реЗрдо рдореЗрдВ DOM рдкрд░ рдЬрд╛рддрд╛ рд╣реВрдВ рдФрд░ рдореБрдЭреЗ рдЬрд┐рд╕ рдХреИрдирд╡рд╛рд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд╡рд╣ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдФрд░ рдпрджрд┐ рдЖрдк рдЕрднреА рднреА (рдЬрд┐рд╕реЗ рд╣рдо рд╕рднреА рдкреНрдпрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ) jQuery рдХреЗ рд╕рд╛рде, $ ('# рдХреИрдирд╡рд╛рд╕') - рдФрд░ рдпрд╣ рдПрдХ рд▓реВрдк рдореЗрдВ рд╣реИ, рддреЛ jQuery рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рднреА рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо рд╕рднреА рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдмреБрд░рд╛рдИ рд╣реИред
рд╣рдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝реАрд▓реНрдб рдореЗрдВ рд╕рднреА рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ (рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реИ)ред
рд╣рдо рдХреАрдмреЛрд░реНрдб рдирд┐рдпрдВрддреНрд░рдг рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ
рдХреЛрдб рдХреЛ рджреЗрдЦреЛ initControll: function() { var handlers = this.controllHandlers(); if (document.documentElement.addEventListener) { document.body.addEventListener('keydown', handlers.keyDown); document.body.addEventListener('keyup', handlers.keyUp); } else { document.body.attachEvent('keydown', handlers.keyDown); document.body.attachEvent('keyup', handlers.keyUp); } return this; }, controllHandlers: function() { var self = this; return { keyDown: function(e) { self.keyDownControll(e.keyCode); }, keyUp: function(e) { self.keyUpControll(e.keyCode); } } }, keyDownControll: function(_keyCode) { switch (_keyCode) { case 37: this.hero.controll.left = true; break; case 39: this.hero.controll.right = true; break; default: break; } }, keyUpControll: function(_keyCode) { switch (_keyCode) { case 37: this.hero.controll.left = false; break; case 39: this.hero.controll.right = false; break; default: break; } }
рдмрд╣реБрдд рдХреБрдЫ рд▓рд┐рдЦрд╛ рд╣реИ, рдмрд╣реБрдд рд╣реА рд╢рд╛рдирджрд╛рд░, рдирд╣реАрдВ? рдХреНрдпреЛрдВ рдирд╣реАрдВ рдРрд╕рд╛ рд╣реА рдХреБрдЫ рдХрд░рдирд╛ рд╣реИ index.html рдлрд╝рд╛рдЗрд▓ рдореЗрдВ
<body onkeydown="eventHandler">
рдФрд░ рдЗрд╕реА рддрд░рд╣ред
рд╡рд┐рдиреАрдд рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЗрдЦрдирдЖрдк рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдмрд╛рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдЗрдП рд╡реАрдХрд╛ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдирд┐рдЪрд▓рд╛ рд░реЗрдЦрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╕рдм рдХреБрдЫ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ, рдкрд╣рд▓реЗ рд╣рдордиреЗ IE рдкрд░ рдЬрд╛рдБрдЪ рдХреА рдереА, рдФрд░, рдореИрдВ рд▓рд┐рдЦ рд╕рдХрддрд╛ рдерд╛
if (navigator.userAgent.indexOf(' MSIE') ! == -1) {
рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рд╡рд┐рд░реЛрдзреА рдкреИрдЯрд░реНрди рд╣реИ (рдпрджрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╣реА рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ), рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдо
addEventListener
рд╡рд┐рдзрд┐ рдХреА рдЬрд░реВрд░рдд рд╣реИ ,
рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рд╣реИ
if (document.documentElement.addEventListener) {
рд╣рдорд╕реЗ рдХреБрдЫ рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВред
рдФрд░ рдШрдЯрдирд╛ рдХреЗ "рдЫреБрдЯрдХрд╛рд░рд╛" рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред
рдШрдЯрдирд╛рдУрдВ рд╕реЗ "Unfasten"редрд╣рдо рд▓рд╛рдЗрди рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:
self.keyDownControll(e.keyCode);
рдпрд╣рд╛рдБ рдореИрдВ
рд▓рд┐рдП рд▓рд┐рдВрдХ рдирд╣реАрдВ .keyCode
рд░рд╣рд╛ рд╣реВрдБ, рд▓реЗрдХрд┐рди .keyCode
, рдЕрд░реНрдерд╛рдд, рдЕрдЧрд░ рдореБрдЭреЗ рдЕрдЪрд╛рдирдХ рдХреАрдмреЛрд░реНрдб рдХреА рдШрдЯрдирд╛рдУрдВ рдкрд░ "рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ" рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рд╕рд┐рд░реНрдл рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, game.keyDownControll (37) рд▓рд┐рдЦрддрд╛ рд╣реВрдВ;
рднреМрддрд┐рдХреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ:
рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдмреБрд░рд╛ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрдкрдиреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рднреМрддрд┐рдХ рджреБрдирд┐рдпрд╛ рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рдереА, рдФрд░ рдирд┐рд░реНрдорд┐рдд рднреМрддрд┐рдХ рдирд┐рдХрд╛рдпреЛрдВ рдХреЛ AddChild рдкрджреНрдзрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╕ рдЗрд╕рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рдлрд┐рд░ рд╣рдо рдпрд╣ рдЬрд╛рдирдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдирд┐рдХрд╛рдпреЛрдВ рдХреЗ рдЯрдХрд░рд╛рд╡ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбрд┐рд╕реНрдкреИрдЪрд░ рд╣реЛрдЧрд╛, рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЙрддреНрдкрд╛рджрди рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХрдВрд╕реЛрд▓ рднреА рд╣реЛрдЧрд╛ред рдЦреИрд░, рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рджреЗрдЦреЗрдВ:
initGame: function() { this.world = new World(this.canvas, this.config.stageW, this.config.stageH); this.hero = new Hero(); this.world.addChild(this.hero.body); },
рдареАрдХ рд╣реИ, рджреБрдирд┐рдпрд╛ рдмрдирд╛рдИ, рдХреИрдирд╡рд╛рд╕ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛, рдЬрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдЦреАрдВрдЪрд╛ рдЬрд╛рдПрдЧрд╛, рдЪреМрдбрд╝рд╛рдИ, рджреБрдирд┐рдпрд╛ рдХреА рдКрдВрдЪрд╛рдИред рд╣рдордиреЗ рд╣реАрд░реЛ рд╡рд░реНрдЧ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛, рдЗрд╕рдХреЗ рднреМрддрд┐рдХ рдШрдЯрдХ "рд╢рд░реАрд░" рдХреЛ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
this.world.addChild(this.hero.body);
рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо рд╢рд░реАрд░ рдХреЛ рдХреИрд╕реЗ рдЖрд░рдВрдн рдХрд░рддреЗ рд╣реИрдВред
this.body = Body.create('Circle', { x: 20, y: 20, radius: 18, gravity: 0.1, bgColor: "#eeeeee", fade: { x: 0.999, y: 0.999 } });
рд╢рд░реАрд░ рдЗрдВрдЬрди рдХрд╛ рдореБрдЦреНрдп рд╡рд░реНрдЧ рд╣реИ, Body.create рдПрдХ
рдХрд╛рд░рдЦрд╛рдирд╛ рд╡рд┐рдзрд┐ рд╣реИ , рдпрд╣ рд╣рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдирд╣реАрдВ рд╣реИрдВ) рд╢рд░реАрд░ред рд╣рдордиреЗ рдПрдХ рдШреЗрд░рд╛ рдмрдирд╛рдпрд╛ рд╣реИред рдФрд░ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкрд╛рд╕ рдХрд┐рдпрд╛ред рдЪрд░реЛрдВ рдХреЗ рдирд╛рдо рд╕реЗ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред
рдкреНрд░рд╕реНрддреБрдд рд╡рд╕реНрддреБрд╣рдо рд╣рдореЗрд╢рд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ (рдЬрдм рддрдХ рдХрд┐ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЧрдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 2 рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИ), рддреЛ рдЖрдкрдХреЛ рдмрд╣реБрдд рд▓реЛрдХрдкреНрд░рд┐рдп (рд╢реБрд░реБрдЖрддреА рдХреЗ рдмреАрдЪ) рдЪреАрдЬреЗрдВ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ, рдЬреИрд╕реЗ:
myFunc(null, null, null, null, null, 123, null, 'string_lol');
(рддреЛ, рдХрд╣реАрдВ рдЖрдк рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдЖрджреЗрд╢ рдХреЛ рдпрд╛рдж рдирд╣реАрдВ рдХрд┐рдпрд╛?) рдФрд░ рдпрд╣ рднреА рд╕реНрдкрд╖реНрдЯ рд╣реИред
рдЦреИрд░, рд╣рдордиреЗ рдХрд┐рд╕реА рддрд░рд╣ рдХрд╛ рд╢рд░реАрд░ рдмрдирд╛рдпрд╛, рдЗрд╕реЗ рджреБрдирд┐рдпрд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдЧреЗ рдХреНрдпрд╛ рдЬрд░реВрд░рдд рд╣реИред рдЕрдЧрд▓рд╛, рдЖрдкрдХреЛ рдЯрд╛рдЗрдорд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП (рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЧрддрд┐рд╢реАрд▓ рдЧреЗрдо рд╣реИ) рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рдЯрд┐рдХ рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рдХреЛрдб рднрд╛рдЧ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ
startLoop: function() { var self = this; this.enterFrame = setInterval(function() { self.loop(); }, this.config.fps); }, loop: function() { var hero = this.hero, enemies = this.enemies, bonuses = this.bonuses; this.world.update();
рдкреВрд░реЗ рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП рдореЗрд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓
рдПрдХ рдирд┐рд░рдВрддрд░ рдЯрд╛рдЗрдорд░ (this.enterFrame) рд╣реИред
рдЖрдк рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ рдПрдХ рдЯрд╛рдЗрдорд░ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЕрдЧрд░ рдпрд╣ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╡рд╣рд╛рдВ рдХреБрдЫ рдХреНрд▓рд╛рд╕ рдХреА рдЕрдиреВрдареА рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ, рддреЛ рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЕрдкрдирд╛ рдЯрд╛рдЗрдорд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП - рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рд╛ рдФрд░ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЦреЗрд▓ рдЪрдХреНрд░ рдХреЗ рджреМрд░рд╛рди рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдиреАрд░рд╕ рдХреНрд░рд┐рдпрд╛рдПрдВ рдПрдХ рдЯрд╛рдЗрдорд░ рджреНрд╡рд╛рд░рд╛ рдХреА рдЬрд╛рддреА рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ рдЗрд╕реЗ рдХреЙрд▓ рдХрд░рддрд╛
this.world.update();
рд╣рд░ рдлреНрд░реЗрдо, рдпрд╣ рдкреВрд░реА рджреБрдирд┐рдпрд╛ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдЯрдХрд░рд╛рд╡реЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдкреВрд░рд╛ рдкреНрд░рджрд░реНрд╢рди рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдЗрд╕реЗ рдпрдерд╛рд╕рдВрднрд╡ "рд╕рд╣реА" (рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ) рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдореИрдВ рддреБрд░рдВрдд
hero = this.hero, enemies = this.enemies, bonuses = this.bonuses;
рдореИрдВ рд╕реНрдерд╛рдиреАрдп рд▓реЛрдЧреЛрдВ рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рджреЗрддрд╛ рд╣реВрдВред
рдЪрд░ рдФрд░ рджреБрднрд╛рд╖рд┐рдпрд╛редрдЬрдм рджреБрднрд╛рд╖рд┐рдпрд╛ рдПрдХ рдЪрд░ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рджреЗрдЦрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдЖрд░рдВрднрд┐рдХ рд╣реИ, рд╕рдмрд╕реЗ рдЧрд╣рд░реЗ рд╕реНрддрд░ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ (рдЕрд░реНрдерд╛рдд, рдЬрд╣рд╛рдВ рдХреЛрдб, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлрд╝рдВрдХреНрд╢рди рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИ) рдФрд░ рд╢реАрд░реНрд╖ рдкрд░, рдЕрд░реНрдерд╛рдд, рдпрджрд┐ рд╣рдо рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╕рднреА рд╕реНрддрд░реЛрдВ рддрдХ рдЬрд╛рдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рддрдХ рддреБрдо рдЙрд╕реЗ рдкрд╛ рди рд╕рдХреЛрдЧреЗред рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рдХреБрдЫ рдЧрд╣рд░реЗ рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╕реНрдерд╛рдиреАрдп рд▓реЛрдЧреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕реМрдВрдкрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╣рдо рдЯрдХрд░рд╛рд╡ рдХреА рдШрдЯрдирд╛ рдХреЛ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХрд┐рд╕рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рд╣реИред
рд╣рдо рд╣реАрд░реЛ рд╡рд░реНрдЧ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╛рд░реЛрд╣
Hero.prototype.initEvents = function() { var self = this; this.body.addHitListener('bodies', function(e){ self.hitAction(e.data); }); }
рдпрд╣реА рд╣реИ, рдЗрд╕ рдкрд░ред (рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдПрдХ рднреМрддрд┐рдХ рд╡рд╕реНрддреБ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╣рдорд╛рд░реЗ рд╕рд╛рдВрдк рдХрд╛ рд╕рд┐рд░ рд╣реИ) рд╣рдордиреЗ рдПрдХ рдШрдЯрдирд╛ рд╣реИрдВрдбрд▓рд░ рд▓рдЯрдХрд╛ рджрд┐рдпрд╛ред рд╡реЗ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ: рднреМрддрд┐рдХ рд╢рд░реАрд░ рдФрд░ рджреБрдирд┐рдпрд╛ рд╕реЗ рдкрд░реЗ рдЬрд╛рдирд╛ред
e.data
рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдПрдХ рд╕рдВрджрд░реНрдн рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ред рд╡рд╕реНрддреБ рдХрд╛
this.body
ред рдХреВрд▓ред рд╕рднреА рдЬреИрд╕рд╛ рд╣рдо рдЪрд╛рд╣рддреЗ рдереЗред
рдЕрдкрдирд╛ рдИрд╡реЗрдВрдЯ рдмрдирд╛рдирд╛ рдЗрддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ (рдФрд░ рдпрджрд┐ рдЖрдк
jQuery рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ , рддреЛ рдпрд╣ рдФрд░ рднреА рдЖрд╕рд╛рди рд╣реЛрдЧрд╛)ред рд▓реЗрдХрд┐рди рд╣рдо рдЦреБрдж рд▓рд┐рдЦреЗрдВрдЧреЗред рдореИрдВрдиреЗ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ
CustomEvent
рдХреНрд▓рд╛рд╕ рдореЗрдВ рд░рдЦрд╛ред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╣реАрдВ рдФрд░ рднреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
рдХреЛрдб рдХреЛ рджреЗрдЦреЛ function CustomEvent(_eventName, _target, _handler) { this.eventName = _eventName; if (_target && _handler) { this.eventListener(_target, _handler); } } CustomEvent.prototype.eventListener = function(_target, _handler) { if (typeof _target == 'string') { this.target = document.getElementById(_target); } else { this.target = _target; } this.handler = _handler; if (this.target.addEventListener) { this.target.addEventListener(this.eventName, this.handler, false); } else if (this.target.attachEvent) { this.target.attachEvent(this.eventName, this.handler); } } CustomEvent.prototype.eventRemove = function() { if (this.target.removeEventListener) { this.target.removeEventListener(this.eventName, this.handler, false); } else if (this.target.detachEvent) { this.target.detachEvent(this.eventName, this.handler); } } CustomEvent.prototype.eventDispatch = function(_data) { if (document.createEvent) { var e = document.createEvent('Events'); e.initEvent(this.eventName, true, false); } else if (document.createEventObject) { var e = document.createEventObject(); } else { return } e.data = _data; if (this.target.dispatchEvent) { this.target.dispatchEvent(e); } else if (this.target.fireEvent) { this.target.fireEvent(this.eventName, e); } }
рдпрд╣рд╛рдВ рднреА рд╕рдм рдХреБрдЫ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдо рдФрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВред рд╣рд░ рдХреЛрдИ рд╢рд╛рдпрдж рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ (рд╕рд╛рдВрдк) рдЕрдкрдиреА рдкреВрдВрдЫ рдХреЛ рдЗрддрдиреА рдЦреВрдмрд╕реВрд░рддреА рд╕реЗ рдХреИрд╕реЗ рд▓рдкреЗрдЯрддрд╛ рд╣реИред рдпрд╣рд╛рдВ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ, рд╣рдо рд╕рд╛рдВрдк рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЕрдЧрд▓реЗ рддрддреНрд╡ рдХреЛ рд╕рд╛рдВрдк рдХреЗ рдкрд┐рдЫрд▓реЗ рд╣рд┐рд╕реНрд╕реЗ рдХреА рдУрд░ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рдЪрдХреНрд░ рдореЗрдВ
this.tales[j].moveTo(this.tales[j - 1].position.x, this.tales[j - 1].position.y, 5);
this.tales [j] рдПрдХ рднреМрддрд┐рдХ рдирд┐рдХрд╛рдп рд╣реИ, рдЕрд░реНрдерд╛рдд, рдЗрдВрдЬрди рдореЗрдВ рдХреБрдЫ рдЕрдиреНрдп
moveTo(_x, _y, _speed)
рд╡рд┐рдзрд┐
moveTo(_x, _y, _speed)
ред рдЬреЛ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ, рдмрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рд╛рде рд╡рд░реНрддрдорд╛рди рдмрд┐рдВрджреБ рд╕реЗ рдмрд┐рдВрджреБ рддрдХ рдЬрд╛рддрд╛ рд╣реИред рдХреИрд╕реЗ рдмрдирд╛рдпреЗ? рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рджреЛ рдмрд┐рдВрджреБрдУрдВ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ, рд╕рдВрдХреНрд░рдордгреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (_speed) рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВ рдФрд░ рд╣рдореЗрдВ рдПрдХ рд╕рдВрдХреНрд░рдордг рдореЗрдВ рдПрдХ рдХрджрдо рдорд┐рд▓реЗрдЧрд╛ред рд╡рд╣ рд╕рдм рд╣реИред
рд╣рдо рдПрдХ рдпреБрд╡рддреА рдореЙрдб рднреА рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдФрд░ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИред рдЪреВрдВрдХрд┐ рдпрд╣ рдкреВрд░реЗ рдЗрдВрдЬрди рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рдХрд╛рдп рдХреА рд╕реНрдереИрддрд┐рдХ рд╕рдВрдкрддреНрддрд┐ рд╣реЛрдЧреА (рдпрд╛рдж рд░рдЦреЗрдВ, рдмреЙрдбреА рдЗрдВрдЬрди рдХрд╛ рдореБрдЦреНрдп рд╡рд░реНрдЧ рд╣реИ)ред рд╣рдо рд╣реАрд░реЛ рд╡рд░реНрдЧ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ (рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдЧреА, рдлрд┐рд░ рд╣рдо рдпрд╣рд╛рдВ рдЖрд░рдВрдн рдХрд░рддреЗ рд╣реИрдВ)
Body.devMode.usePhysLimits = true; Body.devMode.display = true; Body.devMode.bodyId = this.body.id; Body.devMode.use = true; Body.useGravity = false;
- рдкрд╣рд▓рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рджреБрдирд┐рдпрд╛ рдХреА рд╕реАрдорд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдирд┐рдХрд╛рдп рдЙрдиреНрд╣реЗрдВ рдмрдВрдж рдХрд░рддреЗ рд╣реИрдВред
- рджреВрд╕рд░рд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рднреМрддрд┐рдХ рд╢рд░реАрд░ рдХреЗ рдлреНрд░реЗрдореЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╣реИ (рд╣рдо рд╢рд░реАрд░ рдкрд░ рдЖрд░реЗрдЦрдг рдХреЛ рд╕рд░рд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдмрд╕ рдЗрд╕реЗ рд░рдВрдЧ рд╕реЗ рднрд░ рд╕рдХрддреЗ рд╣реИрдВ), рдФрд░ рдпреЗ рд╕реНрд╡рдпрдВ рдЬреНрдпрд╛рдорд┐рддреАрдп рдирд┐рдХрд╛рдп рдХреЗ рдлреНрд░реЗрдо рд╣реИрдВред
- рддреАрд╕рд░рд╛, рдХрд┐рд╕ рд╢рд░реАрд░ рдХреЗ рд▓рд┐рдП рдбрд┐рдмрдЧрд┐рдВрдЧ рд╣реИ: рд╣рд╛рдБ, рд╕рд╛рдВрдк рдХреЗ рд╕рд┐рд░ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╣реИред
this.body
, рдФрд░ id
рджреНрд╡рд╛рд░рд╛ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ (рд╣рд╛рдБ, рдкреНрд░рддреНрдпреЗрдХ рд╢рд░реАрд░ рдХрд╛ рдЕрдкрдирд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реИ)ред - рдЪреМрдерд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХрдВрд╕реЛрд▓ рдХреЛ рд╣реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рд╣реИред
- рдФрд░ рдкрд╛рдВрдЪрд╡рд╛рдВ - рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдпреБрд╡рддреА рдореЛрдб рд╕реЗ рдирд╣реАрдВ, рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ (рдХреМрди рд╕рд╛ рдЗрдВрдЬрди рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рдХреЗ рдмрд┐рдирд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ, рдЦреЗрд▓ "рд╢реАрд░реНрд╖ рджреГрд╢реНрдп" рдЗрд╕рд▓рд┐рдП
false
ред
рдЦреИрд░ рдпрд╣рд╛рдБред
(рдЬреЛ рдпрд╣рд╛рдБ рддрдХ рд╕рд╣реА рдкрдврд╝рддреЗ рд╣реИрдВ, рдХреБрдХреАрдЬрд╝ рдХреЛ рдкрдХрдбрд╝реЗрдВ, рдмрд╛рдПрдБ рдФрд░ рджрд╛рдПрдБ рддреАрд░ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░реЗрдВ):
-
рдпрд╣реА рд╣реЛрдЧрд╛: рднрд╛рдЧ рдПрдХ рдореЗрдВ-
рдФрд░ рдпрд╣ (рджреЗрд╡-рд╡рд┐рдзрд╛) рд╣реИрдФрд░
рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛
рд▓рд┐рдВрдХ рдХрд┐рд╕реА рдХреЛ рднреА рдЕрдзрд┐рдХ рдзреНрдпрд╛рди рд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
PS рдЦреИрд░, рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ рд╣рдо рдЗрд╕рдореЗрдВ рд╕реЗ рдПрдХ рдЦреЗрд▓ рдХреА рддрд░рд╣ рдХреБрдЫ рдФрд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗред