рд╕реНрдкреНрд░рд╛рдЗрдЯ рдЗрдВрдЬрди рдмрдирд╛рдПрдВ

рдПрдХ рдмрд╛рд░ рдЕрдкрдиреА рдкрд╣рд▓реА рдкреЛрд╕реНрдЯ рдореЗрдВ , рдореИрдВрдиреЗ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЫрдБрдЯрд╛рдИ рдХреЗ рд╕рд╛рде рд╕реНрдкреНрд░рд╛рдЗрдЯ рдПрдиреАрдореЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛ ... рдЦреИрд░, рд╡рд╛рджреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ :)


рдФрд░ рдЗрд╕рд▓рд┐рдП, рдЖрдЬ рдореИрдВ рдПрдХ рд╕рд░рд▓ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдЗрдВрдЬрди рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдЧрд╣рд░рд╛рдИ рд╕реЗ рдЫрдВрдЯрд╛рдИ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рд╣реЛрдЧрд╛ред
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреНрд▓рд╛рд╕ рдмрдирд╛рдПрдВ:

рдХреЙрдкреА рд╕реЛрд░реНрд╕ | HTML рдХреЙрдкреА рдХрд░реЗрдВ
  1. рд╕рдорд╛рд░реЛрд╣ рд╕реНрдкреНрд░рд╛рдЗрдЯ (_img, _frames) {
  2. рдпрд╣ .img = _img;
  3. рдпрд╣ .frames = _frames;
  4. this .frameWidth = _img.width / _frames;
  5. }


рд╕реНрдкреНрд░рд╛рдЗрдЯ рдмрдирд╛рддреЗ рд╕рдордп, рд╣рдо рдЕрдкрдиреА рддрд╕реНрд╡реАрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдПрдиреАрдореЗрд╢рди рдХреЗ рдлреНрд░реЗрдо рдХреА рд╕рдВрдЦреНрдпрд╛, рдПрдХ рдлреНрд░реЗрдо рдХреА рдЪреМрдбрд╝рд╛рдИ рдХреА рдЧрдгрдирд╛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдХреА рдЬрд╛рдПрдЧреАред рдЕрд░реЗ рд╣рд╛рдБ, рдореИрдВ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛ рдХрд┐ рддрд╕реНрд╡реАрд░реЗрдВ:
рдЫрд╡рд┐
рдЫрд╡рд┐
рдЫрд╡рд┐
рдЕрдм рдЖрдкрдХреЛ рдЗрди рдЪрд┐рддреНрд░реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:

рдХреЙрдкреА рд╕реЛрд░реНрд╕ | HTML рдХреЙрдкреА рдХрд░реЗрдВ
  1. var рд▓реЛрдб = 0 ;
  2. var allImgs = 3 ;
  3. рдлрд╝рдВрдХреНрд╢рди рдЗрдордЧреЛрдиреЛрдб () {
  4. рднрд░реА рд╣реБрдИ ++;
  5. рдЕрдЧрд░ (рд▓реЛрдб == allImgs) {
  6. рдмрд╛рдж рдореЗрдВ ();
  7. }
  8. }
  9. var img1 = рдирдИ рдЫрд╡рд┐ ();
  10. img1.src = 'img1.png' ;
  11. img1.onload = imgonload;
  12. var img2 = рдирдИ рдЫрд╡рд┐ ();
  13. img2.src = 'img2.png' ;
  14. img2.onload = imgonload;
  15. var img3 = рдирдИ рдЫрд╡рд┐ ();
  16. img3.src = 'img3.png' ;
  17. img3.onload = imgonload;
  18. var spr1, spr2, spr3;
  19. рдХрд╛рд░реНрдп рдХреЗ рдмрд╛рдж () {
  20. spr1 = рдирдпрд╛ рд╕реНрдкреНрд░рд╛рдЗрдЯ (img1, 3 );
  21. spr2 = рдирдпрд╛ рд╕реНрдкреНрд░рд╛рдЗрдЯ (img2, 3 );
  22. spr3 = рдирдпрд╛ рд╕реНрдкреНрд░рд╛рдЗрдЯ (img3, 3 );
  23. }


рдпрд╣ рдХреЛрдб рднреА рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ, рдореИрдВ рдЗрд╕ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреВрдВрдЧрд╛ред
рдЕрдм SpriteEngine рдмрдирд╛рдПрдВ - рдпрд╣ рд╡рд╣ рд╣реЛрдЧрд╛ рдЬреЛ рд╣рдорд╛рд░реЗ рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реЛрдЧрд╛ред

рдХреЙрдкреА рд╕реЛрд░реНрд╕ | HTML рдХреЙрдкреА рдХрд░реЗрдВ
  1. рд╕рдорд╛рд░реЛрд╣ рд╕реНрдкреНрд░рд╛рдЗрдЯрдмрд╛рдЗрди (_layers) {
  2. рдпрд╣ .layers = _layers;
  3. this .renderList = []; // рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░ рд╕рд░рдгреА
  4. рдпрд╣ .ctx;
  5. рдпрд╣ .startRender = рдлрд╝рдВрдХреНрд╢рди (_ctx) {
  6. рдпрд╣ .ctx = _ctx;
  7. рдпрд╣ .renderList.length = 0 ;
  8. рдХреЗ рд▓рд┐рдП ( var i = 0 ; рдореИрдВ <.layers; i ++) {
  9. рдпрд╣ .renderList [i] = [];
  10. }
  11. }
  12. рдпрд╣ .Srprite = function (_s, _x, _y, _frame, _layer) {
  13. // рдЧрдгрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдХреМрди рд╕рд╛ рдЯреБрдХрдбрд╝рд╛ рдЦреАрдВрдЪрдирд╛ рдФрд░ рдЬреЛрдбрд╝рдирд╛ рд╣реИ
  14. // рдпрд╣ рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдПрдХ рдХрддрд╛рд░ рд╣реИ
  15. рдЕрдЧрд░ (_frame <= _s.frames) {
  16. рдпрд╣ .renderList [_layer- 1 ] .push ({
  17. img: _s.img,
  18. x: _x, y: _y,
  19. xonimg: _frame * _s.frameWidth,
  20. рдпреЛрдирд┐рдордЧ: 0 ,
  21. imgwidth: _s.frameWidth,
  22. imgheight: _s.img.height
  23. });
  24. }
  25. }
  26. рдпрд╣ .endender = function () {
  27. // рдпрд╣рд╛рдБ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЖрдХрд░реНрд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ
  28. рдХреЗ рд▓рд┐рдП ( var i = 0 ; рдореИрдВ <.layers; i ++) {
  29. рдХреЗ рд▓рд┐рдП ( var j = 0 ; j < рдпрд╣ .renderList [i] .length; j ++) {
  30. var e = рдпрд╣ .renderList [i] [j];
  31. рдпрд╣ .ctx.drawImage (e.img, e.xonimg, e.yonimg, e.imgwidth, e.imgheight, ex, eye, e.imgwidth, e.imgightight);
  32. }
  33. }
  34. }
  35. }


рд░реЗрдВрдбрд░рд▓рд┐рд╕реНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рд╡рд╛рд▓ рдЙрда рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ "рд╕рд░рдгреА рдХрд╛ рд╕рд░рдгреА" (рджреЛ рдЖрдпрд╛рдореА рдЯреЛрдмрд┐рд╢) рд╣реИред рдкрд╣рд▓рд╛ рд╕рд░рдгреА рдкрд░рдд рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ - рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдСрдмреНрдЬреЗрдХреНрдЯред
рдЕрдм рдореИрдВ SpriteEngin'a рдХреЗ рдирд┐рд░реНрдорд╛рдг, рд╣рдорд╛рд░реЗ рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдХреЗ рдкреНрд░рддрд┐рдкрд╛рджрди рдФрд░ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдмрдврд╝рддреЗ рд╣реБрдП рд╡реИрд░рд┐рдПрдмрд▓ рдлреНрд░реЗрдо рдХреЛ рдЬреЛрдбрд╝реВрдВрдЧрд╛, рдЬреЛ рдПрдиреАрдореЗрд╢рди рдХреЗ рд╡рд░реНрддрдорд╛рди рдлреНрд░реЗрдо рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ:

рдХреЙрдкреА рд╕реЛрд░реНрд╕ | HTML рдХреЙрдкреА рдХрд░реЗрдВ
  1. ...
  2. var рдлреНрд░реЗрдо = 0 ;
  3. рд╕реЗрдЯрдЗрдВрдЯрд░рд╡рд▓ ( рдлрд╝рдВрдХреНрд╢рди () {
  4. рдЕрдЧрд░ (рдлреНрд░реЗрдо < 2 ) {
  5. рдлреНрд░реЗрдо ++;
  6. } {
  7. рдлреНрд░реЗрдо = 0 ;
  8. }
  9. }, 500 );
  10. var ctx = document.getElementById ( 'c' ) .getContext ( '2d' );
  11. var se = new SpriteEngine ( 3 );
  12. ...
  13. рдХрд╛рд░реНрдп рдХреЗ рдмрд╛рдж () {
  14. ...
  15. рд╕реЗрдЯрдЗрдВрдЯрд░рд╡рд▓ ( рдлрд╝рдВрдХреНрд╢рди () {
  16. ctx.fillStyle = '# 007F46' ;
  17. ctx.fillRect ( 0 , 0 , 640 , 480 );
  18. se.startRender (ctx);
  19. se.drawSprite (spr1, 100 , 100 , рдлреНрд░реЗрдо, 3 );
  20. se.drawSprite (spr2, 116 , 116 , рдлреНрд░реЗрдо, 2 );
  21. se.drawSprite (spr3, 132 , 132 , рдлреНрд░реЗрдо, 1 );
  22. se.endRender ();
  23. }, 25 );
  24. }


рд╣рдо рд╕рд╣реЗрдЬрддреЗ рд╣реИрдВ, рдХреАрдбрд╝реЗ рдФрд░ рд╡реЙрдЗрд▓рд╛ рдХреЛ рдкрдХрдбрд╝рддреЗ рд╣реИрдВ :) рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкрд░рддреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ 1 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдФрд░ рдкрд░рдд рдХреА рд╕рдВрдЦреНрдпрд╛ рдЬрд┐рддрдиреА рдмрдбрд╝реА рд╣реЛрддреА рд╣реИ, рдЙрддрдирд╛ рд╣реА "рдпрд╣" рд╣рдорд╕реЗ рд╣реИред рд╣рдо SpriteEngine рдмрдирд╛рддреЗ рд╕рдордп рдкрд░рддреЛрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рд╕реНрд░реЛрдд - tyk
рдкреБрдирд╢реНрдЪ: рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЛ рдХрд╣реАрдВ рдмрд╛рдврд╝ рдЖрддреА рд╣реИ - рдореИрдВ рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛ :)

Source: https://habr.com/ru/post/In167437/


All Articles