HTML5 рдСрдбрд┐рдпреЛ рдФрд░ рдЧреЗрдо рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ: рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдмрдЧ, рд╕рдорд╕реНрдпрд╛рдПрдВ рдФрд░ рд╕рдорд╛рдзрд╛рди, рд╡рд┐рдЪрд╛рд░

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





рдСрдбрд┐рдпреЛ рддрддреНрд╡ рдореЗрдВ рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрдВрджрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЗрд╕реЗ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рдЖрд╡рд░рдг рд▓рд┐рдЦреЗрдВрдЧреЗ:

var LibCanvasAudio = function ( file ) {

this . audio = new Audio ;

this . audio . src = file ;

};



LibCanvasAudio . prototype = {};








.ogg рдмрдирд╛рдо .mp3



рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП - рд╕рдорд░реНрдерд┐рдд рдХреЛрдбреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде dregsред рдЕрдзрд┐рдХрд╛рдВрд╢ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдУрдЧ рд╡реЛрд░рдмрд┐рд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ ( рд▓рд┐рдирдХреНрд╕ рдореЗрдВ рдУрдкреЗрд░рд╛ рдХреЗ рд▓рд┐рдП, gstreamer рдЖрдзрд╛рд░ рдФрд░ рдЕрдЪреНрдЫреЗ рдкреНрд▓рдЧрдЗрдиреНрд╕ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛), рд▓реЗрдХрд┐рди, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, Apple рдиреЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдЖрдЗрдП рд╣рдо рдЙрди рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП .ogg, рдЬреЛ рдЕрдиреНрдп .mp3 рдореЗрдВ рджреЗрдВрдЧреЗ, рдХреЗ рд▓рд┐рдП рдмреНрд░рд╛рдЙрдЬрд╝ рдХрд░реЗрдВред рдлрд╝рд╛рдЗрд▓ рдирд╛рдо рдХреЗ рд╕рднреА рд╕рд┐рддрд╛рд░реЛрдВ рдХреЛ рдХреНрд░рдорд╢рдГ рдУрдЧ рдпрд╛ рдПрдордкреА 3 рдХреЗ рд╕рд╛рде рдмрджрд▓ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛:



var LibCanvasAudio = function ( file ) {

this . audio = new Audio ;

this . src ( file );

};



LibCanvasAudio . prototype = {

src : function ( file ) {

var
codec = this . getSupport ();

if (!
codec ) throw 'AudioNotSupported' ;

this . audio . src = file . replace (/\*/ g , this . getSupport ());

this . audio . load ();

return
this ;

},

getSupport : function () {

return !
this . audio . canPlayType ? false :

this . audio . canPlayType ( 'audio/ogg;' ) ? 'ogg' :

this . audio . canPlayType ( 'audio/mpeg;' ) ? 'mp3' : false ;

}

}










рдЧреИрдЯрд▓рд┐рдВрдЧ рдпреЛрдЬрдирд╛



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



LibCanvasAudio . prototype = {

// ...

cloneAudio : function () {

audioClone = this . audio . cloneNode ( true );

audioClone . load ();

return
audioClone ;

},

gatling : function ( count ) {

this . barrels = [];

this . gatIndex = 0 ;

while (
count --) {

this . barrels . push ( this . cloneAudio ());

}

return
this ;

},

getNext : function () {

var
elem = this . barrels [ this . gatIndex ];

++
this . gatIndex >= this . barrels . length && ( this . gatIndex = 0 );

return
elem ;

},

playNext : function () {

var
elem = this . getNext ();

elem . pause ();

elem . currentTime = 0 ;

elem . play ();

return
this ;

}

};










рд╣рдореЗрдВ рдорд┐рд▓рдиреЗ рд╡рд╛рд▓рд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реИ:

var shotSound = new LibCanvasAudio ( 'explosion.*' ). gatling ( 6 );



window . addEventListener ( 'keydown' , function ( e ) {

(
e . keyCode == keys . SPACE ) && shotSound . playNext ();

},
false );








рдУрдкреЗрд░рд╛ рдореЗрдВ рдмреБрдореЗрд░



рдУрдкреЗрд░рд╛ рдореЗрдВ, рд╣рдо рдПрдХ рдмреБрдореЗрд░ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдкрд░, рдореБрдЭреЗ рдПрдХ рдмрдЧ рдорд┐рд▓рд╛, рдЬрд┐рд╕реЗ рдореИрдВрдиреЗ DSK-309302 рдХреЛрдб рдХреЗ рд╕рд╛рде рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдерд╛ред рдУрдкреЗрд░рд╛ рдореЗрдВ рдХреНрд▓реЛрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдСрдбрд┐рдпреЛ рддрддреНрд╡ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ:



// var audioOrig = document.createElement('audio'); // :

var audioOrig = new Audio ();

audioOrig . src = 'shot.ogg' ;

audioOrig . controls = 'controls' ;



var audioClone = audioOrig . cloneNode ( true );



function
appendToBody ( node ) {

document . getElementsByTagName ( 'body' )[ 0 ]. appendChild ( node );

}



audioOrig . play (); //

audioClone . play (); //



appendToBody ( audioOrig ); //

appendToBody ( audioClone ); //








рдЪрд▓реЛ рдУрдкреЗрд░рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╕реБрдзрд╛рд░ рд▓рд┐рдЦреЗрдВ:

LibCanvasAudio . prototype = {

// ..

cloneAudio : function () {

if (
window . opera ) { // Reported Opera bug DSK-309302

var audioClone = new Audio ;

audioClone . src = this . audio . src ;

} else {

audioClone = this . audio . cloneNode ( true );

}

audioClone . load ();

return
audioClone ;

},

// ..

};








рдлреЙрдХреНрд╕ рдореЗрдВ рдмрдЧ



рд╣рдо рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ 3.5 (3.6 рдФрд░ 4 рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪрд▓реЗ рдЧрдП рд╣реИрдВ) рдореЗрдВ рдПрдХ рдФрд░ рдмрдЧ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдЬрдм рдСрдбрд┐рдпреЛ рдЯреНрд░реИрдХ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдкрд╣рд▓реЗ рджреВрд╕рд░реЗ in рдХреЛ рджреЛрд╣рд░рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рди рдХреЗрд╡рд▓ рдореЗрд░реЗ рд╕рд╛рде: " рджреВрд╕рд░реА рдмрд╛рд░ рдЬрдм рдЖрдк рдмрдЯрди рджрдмрд╛рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдлрд╝рд╛рдпрд░рдлрд╝реЙрдХреНрд╕ рдореЗрдВ" рдмреИрдбрдордо "рдХреЛ рджреЛ рдмрд╛рд░ рдмрдЬрд╛рддрд╛ рд╣реИ ред" ( рд╡реАрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдмрдЧ )ред рдПрдХ рдЫреЛрдЯрд╛ рдлрд┐рдХреНрд╕ рдЬреЛрдбрд╝реЗрдВ - рд╣рдо рдСрдбрд┐рдпреЛ рдХреЛ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдирд╣реАрдВ рдмрд▓реНрдХрд┐ 25 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдкрд░ рд░рд┐рд╡рд╛рдЗрдВрдб рдХрд░реЗрдВрдЧреЗ (рдиреНрдпреВрдирддрдо рдорд╛рди рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рд▓рдЧрднрдЧ 0.021-0.022 рд╕реЗрдХрдВрдб рд╣реИ)ред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдЖрдк рдПрдХ рд╡рд░реНрдЬрди рдЪреЗрдХ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рднреА рдХреЛ рд▓реМрдЯрд╛ рд╕рдХрддреЗ рд╣реИрдВ рд▓реЗрдХрд┐рди рд╢реБрд░реБрдЖрдд рдореЗрдВ 3.5 рд▓реЛрдордбрд╝рд┐рдпреЛрдВ (рд▓реЗрдХрд┐рди 25 рдорд┐рд▓реАрд╕реЗрдХрдВрдб рдФрд░ рд╢реВрдиреНрдп рдХреЗ рдмреАрдЪ рдХрд╛ рдЕрдВрддрд░ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЪрд░рдо рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЗрд╕ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд░, рдЖрдк рдЕрдкрдиреЗ рдкрд╕рдВрджреАрджрд╛ рд╕рдВрдкрд╛рджрдХ 25 рдорд┐рд╕реЗ рдореЗрдВ рд╕рднреА рдСрдбрд┐рдпреЛ рдХреЛ рдмрд╛рдИрдВ рдУрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ):



LibCanvasAudio . prototype = {

// ..

playNext : function () {

var
elem = this . getNext ();

elem . pause ();

elem . currentTime = 0.025 ;

elem . play ();

return
this ;

}

};








рдмреЛрдирд╕



Ie9 рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди 4 рдореЗрдВ, new Audio()



рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ document.createElement('audio');



рд╕рд╛рде рдмрджрд▓рдХрд░ рд╣рд▓ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ document.createElement('audio');







рдЕрдВрдд рдореЗрдВ рдХреНрдпрд╛ рд╣реБрдЖ (рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдкреНрд░рд╣рд╛рд░)



рд╕реНрд░реЛрдд рдХреЛрдб рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк: pastebin.com/xG4mhX3w



All Articles