рдПрдХ рдмрд╛рд░ рдЕрдкрдиреА
рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ , рдореИрдВрдиреЗ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЫрдБрдЯрд╛рдИ рдХреЗ рд╕рд╛рде рд╕реНрдкреНрд░рд╛рдЗрдЯ рдПрдиреАрдореЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛ ... рдЦреИрд░, рд╡рд╛рджреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ :)
рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЖрдЬ рдореИрдВ рдПрдХ рд╕рд░рд▓ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдЗрдВрдЬрди рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЫрдВрдЯрд╛рдИ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реЛрдЧрд╛ред
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╕реНрдкреНрд░рд╛рдЗрдЯ
рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВ:
рдХреЙрдкреА рд╕реЛрд░реНрд╕ | HTML рдХреЙрдкреА рдХрд░реЗрдВ- рд╕рдорд╛рд░реЛрд╣ рд╕реНрдкреНрд░рд╛рдЗрдЯ (_img, _frames) {
- рдпрд╣ .img = _img;
- рдпрд╣ .frames = _frames;
- this .frameWidth = _img.width / _frames;
- }
рд╕реНрдкреНрд░рд╛рдЗрдЯ рдмрдирд╛рддреЗ рд╕рдордп, рд╣рдо рдЕрдкрдиреА рддрд╕реНрд╡реАрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдиреАрдореЗрд╢рди рдХреЗ рдлреНрд░реЗрдо рдХреА рд╕рдВрдЦреНрдпрд╛, рдПрдХ рдлреНрд░реЗрдо рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреА рдЧрдгрдирд╛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдХреА рдЬрд╛рдПрдЧреАред рдЕрд░реЗ рд╣рд╛рдБ, рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ рдХрд┐ рддрд╕реНрд╡реАрд░реЗрдВ:



рдЕрдм рдЖрдкрдХреЛ рдЗрди рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
рдХреЙрдкреА рд╕реЛрд░реНрд╕ | HTML рдХреЙрдкреА рдХрд░реЗрдВ- var рд▓реЛрдб = 0 ;
- var allImgs = 3 ;
- рдлрд╝рдВрдХреНрд╢рди рдЗрдордЧреЛрдиреЛрдб () {
- рднрд░реА рд╣реБрдИ ++;
- рдЕрдЧрд░ (рд▓реЛрдб == allImgs) {
- рдмрд╛рдж рдореЗрдВ ();
- }
- }
- var img1 = рдирдИ рдЫрд╡рд┐ ();
- img1.src = 'img1.png' ;
- img1.onload = imgonload;
- var img2 = рдирдИ рдЫрд╡рд┐ ();
- img2.src = 'img2.png' ;
- img2.onload = imgonload;
- var img3 = рдирдИ рдЫрд╡рд┐ ();
- img3.src = 'img3.png' ;
- img3.onload = imgonload;
- var spr1, spr2, spr3;
- рдХрд╛рд░реНрдп рдХреЗ рдмрд╛рдж () {
- spr1 = рдирдпрд╛ рд╕реНрдкреНрд░рд╛рдЗрдЯ (img1, 3 );
- spr2 = рдирдпрд╛ рд╕реНрдкреНрд░рд╛рдЗрдЯ (img2, 3 );
- spr3 = рдирдпрд╛ рд╕реНрдкреНрд░рд╛рдЗрдЯ (img3, 3 );
- }
рдпрд╣ рдХреЛрдб рднреА рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдореИрдВ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреВрдВрдЧрд╛ред
рдЕрдм SpriteEngine рдмрдирд╛рдПрдВ - рдпрд╣ рд╡рд╣ рд╣реЛрдЧрд╛ рдЬреЛ рд╣рдорд╛рд░реЗ рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛ред
рдХреЙрдкреА рд╕реЛрд░реНрд╕ | HTML рдХреЙрдкреА рдХрд░реЗрдВ- рд╕рдорд╛рд░реЛрд╣ рд╕реНрдкреНрд░рд╛рдЗрдЯрдмрд╛рдЗрди (_layers) {
- рдпрд╣ .layers = _layers;
- this .renderList = []; // рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░ рд╕рд░рдгреА
- рдпрд╣ .ctx;
- рдпрд╣ .startRender = рдлрд╝рдВрдХреНрд╢рди (_ctx) {
- рдпрд╣ .ctx = _ctx;
- рдпрд╣ .renderList.length = 0 ;
- рдХреЗ рд▓рд┐рдП ( var i = 0 ; рдореИрдВ <.layers; i ++) {
- рдпрд╣ .renderList [i] = [];
- }
- }
- рдпрд╣ .Srprite = function (_s, _x, _y, _frame, _layer) {
- // рдЧрдгрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдХреМрди рд╕рд╛ рдЯреБрдХрдбрд╝рд╛ рдЦреАрдВрдЪрдирд╛ рдФрд░ рдЬреЛрдбрд╝рдирд╛ рд╣реИ
- // рдпрд╣ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдХрддрд╛рд░ рд╣реИ
- рдЕрдЧрд░ (_frame <= _s.frames) {
- рдпрд╣ .renderList [_layer- 1 ] .push ({
- img: _s.img,
- x: _x, y: _y,
- xonimg: _frame * _s.frameWidth,
- рдпреЛрдирд┐рдордЧ: 0 ,
- imgwidth: _s.frameWidth,
- imgheight: _s.img.height
- });
- }
- }
- рдпрд╣ .endender = function () {
- // рдпрд╣рд╛рдБ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ
- рдХреЗ рд▓рд┐рдП ( var i = 0 ; рдореИрдВ <.layers; i ++) {
- рдХреЗ рд▓рд┐рдП ( var j = 0 ; j < рдпрд╣ .renderList [i] .length; j ++) {
- var e = рдпрд╣ .renderList [i] [j];
- рдпрд╣ .ctx.drawImage (e.img, e.xonimg, e.yonimg, e.imgwidth, e.imgheight, ex, eye, e.imgwidth, e.imgightight);
- }
- }
- }
- }
рд░реЗрдВрдбрд░рд▓рд┐рд╕реНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╡рд╛рд▓ рдЙрда рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ "рд╕рд░рдгреА рдХрд╛ рд╕рд░рдгреА" (рджреЛ рдЖрдпрд╛рдореА рдЯреЛрдмрд┐рд╢) рд╣реИред рдкрд╣рд▓рд╛ рд╕рд░рдгреА рдкрд░рдд рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ - рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдСрдмреНрдЬреЗрдХреНрдЯред
рдЕрдм рдореИрдВ SpriteEngin'a рдХреЗ рдирд┐рд░реНрдорд╛рдг, рд╣рдорд╛рд░реЗ рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдФрд░ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдмрдврд╝рддреЗ рд╣реБрдП рд╡реИрд░рд┐рдПрдмрд▓
рдлреНрд░реЗрдо рдХреЛ рдЬреЛрдбрд╝реВрдВрдЧрд╛, рдЬреЛ рдПрдиреАрдореЗрд╢рди рдХреЗ рд╡рд░реНрддрдорд╛рди рдлреНрд░реЗрдо рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ:
рдХреЙрдкреА рд╕реЛрд░реНрд╕ | HTML рдХреЙрдкреА рдХрд░реЗрдВ- ...
- var рдлреНрд░реЗрдо = 0 ;
- рд╕реЗрдЯрдЗрдВрдЯрд░рд╡рд▓ ( рдлрд╝рдВрдХреНрд╢рди () {
- рдЕрдЧрд░ (рдлреНрд░реЗрдо < 2 ) {
- рдлреНрд░реЗрдо ++;
- } {
- рдлреНрд░реЗрдо = 0 ;
- }
- }, 500 );
- var ctx = document.getElementById ( 'c' ) .getContext ( '2d' );
- var se = new SpriteEngine ( 3 );
- ...
- рдХрд╛рд░реНрдп рдХреЗ рдмрд╛рдж () {
- ...
- рд╕реЗрдЯрдЗрдВрдЯрд░рд╡рд▓ ( рдлрд╝рдВрдХреНрд╢рди () {
- ctx.fillStyle = '# 007F46' ;
- ctx.fillRect ( 0 , 0 , 640 , 480 );
- se.startRender (ctx);
- se.drawSprite (spr1, 100 , 100 , рдлреНрд░реЗрдо, 3 );
- se.drawSprite (spr2, 116 , 116 , рдлреНрд░реЗрдо, 2 );
- se.drawSprite (spr3, 132 , 132 , рдлреНрд░реЗрдо, 1 );
- se.endRender ();
- }, 25 );
- }
рд╣рдо рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ, рдХреАрдбрд╝реЗ рдФрд░ рд╡реЙрдЗрд▓рд╛ рдХреЛ рдкрдХрдбрд╝рддреЗ рд╣реИрдВ :) рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкрд░рддреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 1 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдФрд░ рдкрд░рдд рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬрд┐рддрдиреА рдмрдбрд╝реА рд╣реЛрддреА рд╣реИ, рдЙрддрдирд╛ рд╣реА "рдпрд╣" рд╣рдорд╕реЗ рд╣реИред рд╣рдо SpriteEngine рдмрдирд╛рддреЗ рд╕рдордп рдкрд░рддреЛрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рд╕реНрд░реЛрдд -
tykрдкреБрдирд╢реНрдЪ: рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдХрд╣реАрдВ рдмрд╛рдврд╝ рдЖрддреА рд╣реИ - рдореИрдВ рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ :)