рдПрдиреАрдореЗрд╢рди рдФрд░ рдХреИрдирд╡рд╛рд╕

рдореЗрд░реЗ рд╣рд╛рде рдХреИрдирд╡рд╕ рдкрд░ рд▓рдЧ рдЧрдПред рдореИрдВрдиреЗ рдЙрд╕реЗ рдмрд╣реБрдд рд╕рдордп рдкрд╣рд▓реЗ рджреЗрдЦрд╛ рдерд╛, рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдЙрд╕рдиреЗ рдореБрдЭреЗ рд░реЗрдЦрд╛рдВрдХрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╕рдВрдж рдХрд┐рдпрд╛ред рдФрд░ Habr├й рдкрд░ рдХреИрдирд╡рд╕ рд╕рдкреНрддрд╛рд╣ рдиреЗ рдмреНрдпрд╛рдЬ рдХрд╛ рд╕рдорд░реНрдерди рдХрд┐рдпрд╛ред

рд▓реЗрдХрд┐рди рдмреЛрд░рд┐рдВрдЧ рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рдмрдЬрд╛рдп, рдореИрдВрдиреЗ рдПрдиреАрдореЗрд╢рди рдХреА рджрд┐рд╢рд╛ рдореЗрдВ рдЦреБрджрд╛рдИ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╣рдо рджреГрд╢реНрдп рдХреЛ рд╣рд░ рдмрд╛рд░ рдПрдХ рдирдП рддрд░реАрдХреЗ рд╕реЗ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ, рдХреНрд░рдорд╢рдГ рд╡рд░реНрддрдорд╛рди рдлрд╝реНрд░реЗрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЬрд╛рдирдХрд╛рд░реА рдЬреЗрдПрд╕ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИред рдФрд░ рдореИрдВрдиреЗ рдПрдХ рд╕рд░рд▓ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрд░реЛрдз рдкрд░ рдСрдмреНрдЬреЗрдХреНрдЯ, рдЙрдирдХреЗ рд░рд╛рдЬреНрдп рдФрд░ рдЪрдпрди рдХреЗ рд▓рд┐рдП рдПрдирд┐рдореЗрд╢рди рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рдХреИрдирд╡рд╛рд╕


рдпрд╣рд╛рдВ рд╕рдм рдХреБрдЫ рд╕рд░рд▓ рдФрд░ рдорд╛рдирдХ рд╣реИред
<! DOCTYPE html >
< html >
< head >
< title > Animation test </ title >
< meta http-equiv ="Content-Type" content ="text/html; charset=UTF-8" >
</ head >
< body >
< canvas id ="cnv" width ="600" height ="200" > It's not working! </ canvas >
< select id ="animations" name ="animations" onchange ="changeAnimation(this.value)" >
< option value ="stop" > Stop </ option >
< option value ="jump" > Jump </ option >
< option value ="bum" > Bum </ option >
< option value ="dead" > Dead </ option >
</ select >
</ body >
</ html >

* This source code was highlighted with Source Code Highlighter .
<! DOCTYPE html >
< html >
< head >
< title > Animation test </ title >
< meta http-equiv ="Content-Type" content ="text/html; charset=UTF-8" >
</ head >
< body >
< canvas id ="cnv" width ="600" height ="200" > It's not working! </ canvas >
< select id ="animations" name ="animations" onchange ="changeAnimation(this.value)" >
< option value ="stop" > Stop </ option >
< option value ="jump" > Jump </ option >
< option value ="bum" > Bum </ option >
< option value ="dead" > Dead </ option >
</ select >
</ body >
</ html >

* This source code was highlighted with Source Code Highlighter .
<! DOCTYPE html >
< html >
< head >
< title > Animation test </ title >
< meta http-equiv ="Content-Type" content ="text/html; charset=UTF-8" >
</ head >
< body >
< canvas id ="cnv" width ="600" height ="200" > It's not working! </ canvas >
< select id ="animations" name ="animations" onchange ="changeAnimation(this.value)" >
< option value ="stop" > Stop </ option >
< option value ="jump" > Jump </ option >
< option value ="bum" > Bum </ option >
< option value ="dead" > Dead </ option >
</ select >
</ body >
</ html >

* This source code was highlighted with Source Code Highlighter .


рдЪрдпрди рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП рдПрдирд┐рдореЗрд╢рди рдХреА рдПрдХ рд╕реВрдЪреА рдХреЗ рд╕рд╛рде рдХреИрдирд╡рд╛рд╕ рдХреЗ рддрд╣рдд рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реЛрдЧрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд┐рд╕реА рднреА рдкреНрд░рддрд┐рдмрдВрдз рдХрд╛ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

рд╡реИрд╢реНрд╡рд┐рдХ рдЪрд░

рдЕрдм рд╣рдо JS рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдореБрдЭреЗ рджреГрд╢реНрдп рд╡рд╕реНрддреБрдУрдВ рдФрд░ рд╕рдВрднрд╡ рдПрдирд┐рдореЗрд╢рди рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдЪрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
//
function $(id) {
return document .getElementById(id);
}

var tx = $( 'cnv' ).getContext( '2d' ); //
var childs = {}; //
var animate = {}; //

* This source code was highlighted with Source Code Highlighter .
//
function $(id) {
return document .getElementById(id);
}

var tx = $( 'cnv' ).getContext( '2d' ); //
var childs = {}; //
var animate = {}; //

* This source code was highlighted with Source Code Highlighter .
//
function $(id) {
return document .getElementById(id);
}

var tx = $( 'cnv' ).getContext( '2d' ); //
var childs = {}; //
var animate = {}; //

* This source code was highlighted with Source Code Highlighter .



рдЪрд┐рд▓реНрдб рд╕рднреА рджреГрд╢реНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмреБрдирд┐рдпрд╛рджреА рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд░реЗрдЧрд╛ред рд╣рдо рд╕рд░рдгреА рдкрд░ рдЬрд╛рдПрдВрдЧреЗ рдФрд░ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдбреНрд░рд╛ рдХрд░реЗрдВрдЧреЗред
рдЪреЗрддрди рдореЗрдВ, рд╣рдо рдЗрд╕рдХреЗ рдПрдиреАрдореЗрд╢рди рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдпрд╣ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЪреЗрддрди рдореЗрдВ рд╣рдо рдХреЗрд╡рд▓ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рдПрдирд┐рдореЗрд╢рди рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреА рдЙрдиреНрд╣реЗрдВ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рджреВрд╕рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╣рдо рдЦреБрдж рд╣реА рдЪрд┐рд▓реНрдб рдПрд░реЗ рдореЗрдВ рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддреЗ рд╣реИрдВред рдореЗрд░реЗ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдПрдиреАрдореЗрд╢рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЕрдЧрд░ рд╡рд╣ рдХреИрдирд╡рд╛рд╕ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИред

рдПрд░реЗрд╕ рднрд░реЗрдВ

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдорд╛рд░реА рд╡рд╕реНрддреБ рдЬреЛрдбрд╝реЗрдВред рдореИрдВрдиреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд▓рд┐рдЦрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдирд╛рдо рд╕рднреА рд╕рд╣рдЬ рд╣реИрдВред

function initAnimation() {

//
childs[ 'ball' ] = {
'at' : 'jump' , //
'w' : 30, //
'h' : 30, //
'fw' : 30, //
'x' : 100, //
'y' : 100 //
}

//
animate[ 'ball' ] = {
'jump' : { //
'el' : null , // Image
'src' : 'images/ball.png' , //
'step' : 0, //
'speed' : 3, //
'curr' : 0, //
'steps' : 3, // , 0
'onend' : null //
},
'bum' : {
'el' : null ,
'src' : 'images/ball_m.png' ,
'step' : 0,
'speed' : 3,
'curr' : 0,
'steps' : 7,
'onend' : 'onBumEnd'
},
'stop' : {
'el' : null ,
'src' : 'images/ball_s.png' ,
'step' : 0,
'speed' : 10,
'curr' : 0,
'steps' : 0,
'onend' : null
},
'dead' : {
'el' : null ,
'src' : 'images/ball_d.png' ,
'step' : 0,
'speed' : 10,
'curr' : 0,
'steps' : 0,
'onend' : null
}
}

//
for ( var o in childs) {

//
for ( var a in animate[o]) {

//
var img = new Image();
img.src = animate[o][a].src;
//
animate[o][a].el = img;

}

}

}

* This source code was highlighted with Source Code Highlighter .
function initAnimation() {

//
childs[ 'ball' ] = {
'at' : 'jump' , //
'w' : 30, //
'h' : 30, //
'fw' : 30, //
'x' : 100, //
'y' : 100 //
}

//
animate[ 'ball' ] = {
'jump' : { //
'el' : null , // Image
'src' : 'images/ball.png' , //
'step' : 0, //
'speed' : 3, //
'curr' : 0, //
'steps' : 3, // , 0
'onend' : null //
},
'bum' : {
'el' : null ,
'src' : 'images/ball_m.png' ,
'step' : 0,
'speed' : 3,
'curr' : 0,
'steps' : 7,
'onend' : 'onBumEnd'
},
'stop' : {
'el' : null ,
'src' : 'images/ball_s.png' ,
'step' : 0,
'speed' : 10,
'curr' : 0,
'steps' : 0,
'onend' : null
},
'dead' : {
'el' : null ,
'src' : 'images/ball_d.png' ,
'step' : 0,
'speed' : 10,
'curr' : 0,
'steps' : 0,
'onend' : null
}
}

//
for ( var o in childs) {

//
for ( var a in animate[o]) {

//
var img = new Image();
img.src = animate[o][a].src;
//
animate[o][a].el = img;

}

}

}

* This source code was highlighted with Source Code Highlighter .
function initAnimation() {

//
childs[ 'ball' ] = {
'at' : 'jump' , //
'w' : 30, //
'h' : 30, //
'fw' : 30, //
'x' : 100, //
'y' : 100 //
}

//
animate[ 'ball' ] = {
'jump' : { //
'el' : null , // Image
'src' : 'images/ball.png' , //
'step' : 0, //
'speed' : 3, //
'curr' : 0, //
'steps' : 3, // , 0
'onend' : null //
},
'bum' : {
'el' : null ,
'src' : 'images/ball_m.png' ,
'step' : 0,
'speed' : 3,
'curr' : 0,
'steps' : 7,
'onend' : 'onBumEnd'
},
'stop' : {
'el' : null ,
'src' : 'images/ball_s.png' ,
'step' : 0,
'speed' : 10,
'curr' : 0,
'steps' : 0,
'onend' : null
},
'dead' : {
'el' : null ,
'src' : 'images/ball_d.png' ,
'step' : 0,
'speed' : 10,
'curr' : 0,
'steps' : 0,
'onend' : null
}
}

//
for ( var o in childs) {

//
for ( var a in animate[o]) {

//
var img = new Image();
img.src = animate[o][a].src;
//
animate[o][a].el = img;

}

}

}

* This source code was highlighted with Source Code Highlighter .



рдореИрдВ рдереЛрдбрд╝рд╛ рд╕рдордЭрд╛рдКрдВрдЧрд╛ред рдкреНрд░рддреНрдпреЗрдХ рдПрдиреАрдореЗрд╢рди рд╕рднреА рдлрд╝реНрд░реЗрдореЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдлрд╝рд╛рдЗрд▓ рд╣реИред рдХреИрдирд╡рд╛рд╕ рдкрд░, рдореИрдВ рд╡рд░реНрддрдорд╛рди рдлреНрд░реЗрдо рдХреЗ рдЕрдиреБрд░реВрдк рдЫрд╡рд┐ рдХрд╛ рдХреЗрд╡рд▓ рднрд╛рдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП, рдореИрдВ рдЪрд░рдг рдФрд░ рдЪрд░рдгреЛрдВ (рдлрд╝реНрд░реЗрдореЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛) рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рддрд╛ рд╣реВрдВред

рдЫрд╡рд┐ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
рдЫрд╡рд┐
рдпрд╣ рд╕рдмрд╕реЗ рдмрдбрд╝реА 8 рдлреНрд░реЗрдо рдмрдо рдПрдиреАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╕рдмрд╕реЗ рдмрдбрд╝реА рдЫрд╡рд┐ рд╣реИред

рдЧрддрд┐ рдФрд░ рд╡рдХреНрд░ рдлреНрд░реЗрдо рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдЧрддрд┐ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред рдореИрдВ рдХреИрдирд╡рд╛рд╕ рдХреЛ рд╣рд░ 16ms рдкрд░ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рдФрд░ рддрд╛рдХрд┐ рдлреНрд░реЗрдо рдЖрд╡рд╢реНрдпрдХ рдЧрддрд┐ рд╕реЗ рдмрджрд▓ рдЬрд╛рдП, рдореИрдВ рд╡рдХреНрд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЧрддрд┐ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рдмрд╛рдж рдореИрдВ рдлреНрд░реЗрдо рдХреЛ рдмрджрд▓рддрд╛ рд╣реВрдВред

рдореИрдВ рдПрдиреАрдореЗрд╢рди рдХреЗ рдЕрдВрдд рдореЗрдВ рдУрдиреЗрдВрдб рдХрд╣рддрд╛ рд╣реВрдВред рдпрд╣рд╛рдВ рд╣рдо рдПрдиреАрдореЗрд╢рди рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ - рд╡рд┐рд╕реНрдлреЛрдЯ рд╕реЗ рдЕрд╡рд╢реЗрд╖реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдпрд╛ рдХрд┐рд╕реА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рд╕рд░рдгреА рд╕реЗ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕ рдХреЗ рд▓рд┐рдП, рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рдЕрдзрд┐рдХ, рдореИрдВ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рд╣реИ:
function onBumEnd() {

//
childs[ 'ball' ].at = 'dead' ;
//
animate[ 'ball' ][childs[ 'ball' ].at].curr = 0;

}


* This source code was highlighted with Source Code Highlighter .
function onBumEnd() {

//
childs[ 'ball' ].at = 'dead' ;
//
animate[ 'ball' ][childs[ 'ball' ].at].curr = 0;

}


* This source code was highlighted with Source Code Highlighter .
function onBumEnd() {

//
childs[ 'ball' ].at = 'dead' ;
//
animate[ 'ball' ][childs[ 'ball' ].at].curr = 0;

}


* This source code was highlighted with Source Code Highlighter .



рдПрдирд┐рдореЗрд╢рди

рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдП 4 рдПрдирд┐рдореЗрд╢рди рд╣реИрдВ:


рдПрдиреАрдореЗрд╢рди рдмрджрд▓рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп

рдПрдирд┐рдореЗрд╢рди рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЪрдпрди рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ:
function changeAnimation(value) {

//
childs[ 'ball' ].at = value;
//
animate[ 'ball' ][childs[ 'ball' ].at].curr = 0;

}


* This source code was highlighted with Source Code Highlighter .
function changeAnimation(value) {

//
childs[ 'ball' ].at = value;
//
animate[ 'ball' ][childs[ 'ball' ].at].curr = 0;

}


* This source code was highlighted with Source Code Highlighter .
function changeAnimation(value) {

//
childs[ 'ball' ].at = value;
//
animate[ 'ball' ][childs[ 'ball' ].at].curr = 0;

}


* This source code was highlighted with Source Code Highlighter .


рд╣рдо рд▓реЙрдиреНрдЪ рдХрд░рддреЗ рд╣реИрдВ

рддреЛ рд╕рднреА рдЪрд┐рддреНрд░ рдФрд░ рд╕рд░рдгрд┐рдпрд╛рдВ рддреИрдпрд╛рд░ рд╣реИрдВ, рдФрд░ рдореИрдВ рдПрдиреАрдореЗрд╢рди рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВред
function startAnimation() {

//
setInterval( function () {

//
ctx.save();
ctx.fillStyle = '#FFFFFF' ;
ctx.fillRect(0, 0, 600, 200);
ctx.restore();

//
for ( var o in childs) {

//
if (animate[o]) {

//
var step = animate[o][childs[o].at].step;

//
ctx.drawImage(
animate[o][childs[o].at].el, // Image
Math.round(childs[o].fw * step), // , *
0, // , 0
childs[o].w, //
childs[o].h, //
childs[o].x, //
childs[o].y, //
childs[o].w, //
childs[o].h //
);

// speed,
if (animate[o][childs[o].at].curr >= animate[o][childs[o].at].speed) {

//,
if (animate[o][childs[o].at].step >= animate[o][childs[o].at].steps) {

animate[o][childs[o].at].step = 0;

// , ,
if (animate[o][childs[o].at].onend)
window[animate[o][childs[o].at].onend]();

}
else animate[o][childs[o].at].step++;

//
animate[o][childs[o].at].curr = 0;

}

//
animate[o][childs[o].at].curr++;

}

}

}, 1000/16);

}


* This source code was highlighted with Source Code Highlighter .
function startAnimation() {

//
setInterval( function () {

//
ctx.save();
ctx.fillStyle = '#FFFFFF' ;
ctx.fillRect(0, 0, 600, 200);
ctx.restore();

//
for ( var o in childs) {

//
if (animate[o]) {

//
var step = animate[o][childs[o].at].step;

//
ctx.drawImage(
animate[o][childs[o].at].el, // Image
Math.round(childs[o].fw * step), // , *
0, // , 0
childs[o].w, //
childs[o].h, //
childs[o].x, //
childs[o].y, //
childs[o].w, //
childs[o].h //
);

// speed,
if (animate[o][childs[o].at].curr >= animate[o][childs[o].at].speed) {

//,
if (animate[o][childs[o].at].step >= animate[o][childs[o].at].steps) {

animate[o][childs[o].at].step = 0;

// , ,
if (animate[o][childs[o].at].onend)
window[animate[o][childs[o].at].onend]();

}
else animate[o][childs[o].at].step++;

//
animate[o][childs[o].at].curr = 0;

}

//
animate[o][childs[o].at].curr++;

}

}

}, 1000/16);

}


* This source code was highlighted with Source Code Highlighter .
function startAnimation() {

//
setInterval( function () {

//
ctx.save();
ctx.fillStyle = '#FFFFFF' ;
ctx.fillRect(0, 0, 600, 200);
ctx.restore();

//
for ( var o in childs) {

//
if (animate[o]) {

//
var step = animate[o][childs[o].at].step;

//
ctx.drawImage(
animate[o][childs[o].at].el, // Image
Math.round(childs[o].fw * step), // , *
0, // , 0
childs[o].w, //
childs[o].h, //
childs[o].x, //
childs[o].y, //
childs[o].w, //
childs[o].h //
);

// speed,
if (animate[o][childs[o].at].curr >= animate[o][childs[o].at].speed) {

//,
if (animate[o][childs[o].at].step >= animate[o][childs[o].at].steps) {

animate[o][childs[o].at].step = 0;

// , ,
if (animate[o][childs[o].at].onend)
window[animate[o][childs[o].at].onend]();

}
else animate[o][childs[o].at].step++;

//
animate[o][childs[o].at].curr = 0;

}

//
animate[o][childs[o].at].curr++;

}

}

}, 1000/16);

}


* This source code was highlighted with Source Code Highlighter .



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

рд╕рдВрдкреВрд░реНрдг рдХреЛрдб

рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдБ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдБ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред

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


All Articles