我正在使用
jquery mobile更新页面中的div以播放一些动画.
动画也通过使用document.createElement(‘audio’)播放声音;
我的问题是,当我将页面更新为另一个动画时,旧的声音继续播放.
对不起,这是我的第一个问题,如果我似乎没有正确地说它,我道歉.
这是我的代码..
这是要加载到#animation div中的动画的代码
<!DOCTYPE HTML> <html> <head> <style> body { margin: 0px; padding: 0px; } </style> </head> <body> <div id="container"></div> <script src="scripts/kinetic-v4.3.2.min.js"></script> <script src="scripts/jquery-1.9.1.js"></script> <script> /*BABY SCENE*/ var stage = new Kinetic.Stage({ container: 'container',width: 578,height: 400 }); var babyLayer = new Kinetic.Layer(); var backLayer = new Kinetic.Layer(); var imageObj = new Image(); var backObj = new Image(); imageObj.onload = function() { var baby = new Kinetic.Image({ x: stage.getWidth() / 2 -100,y: stage.getHeight() / 2 -100,image: imageObj,width: 200,height: 200,opacity: 0.0 }); var background = new Kinetic.Image({ x: 0,y: 0,image: backObj,height: 400,opacity: 0.0 }); // add the shape to the layer babyLayer.add(baby); backLayer.add(background); // add the layer to the stage stage.add(babyLayer); stage.add(backLayer); babyLayer.moveToTop(); babyLayer.draw(); /*ANIMATION TIMELINE * * FIRST EVENT: FADE IN BABY * SECOND EVENT: BABY TRANSITION * THIRD EVENT: FADE IN BACKGROUND */ /*1) Fade in Baby*/ setTimeout(function() { baby.transitionTo({ opacity: 1,duration: 1 }); },200); setTimeout(function() { /*JQuery Baby Speech*/ $(document).ready(function() { var babySpeech = document.createElement('audio'); babySpeech.setAttribute('src','../Animations/sounds/babyspeech.mp3'); babySpeech.setAttribute('autoplay','autoplay'); //audioElement.load() $.get(); babySpeech.addEventListener("load",function() { babySpeech.play(); },true); }); },800); /*2) Baby Transition*/ setTimeout(function() { baby.transitionTo({ x: 140,y: stage.getHeight() / 2 + 59,width: 106,height: 118,opacity: 1,duration: 3 }); },3000); setTimeout(function() { /*JQuery Baby Giggle*/ $(document).ready(function() { var baby = document.createElement('audio'); baby.setAttribute('src','../Animations/sounds/baby.mp3'); baby.setAttribute('autoplay','autoplay'); //audioElement.load() $.get(); baby.addEventListener("load",function() { baby.play(); },3000); /*3) Fade in Background*/ setTimeout(function() { background.transitionTo({ opacity: 1,3200); setTimeout(function() { /*Second JQuery Baby Speech*/ $(document).ready(function() { var babySpeech = document.createElement('audio'); babySpeech.setAttribute('src',8700); }; imageObj.src = '../Animations/images/baby.png'; backObj.src = '../Animations/images/background/babyroom.jpg'; </script>
这是主页面代码.当您单击下一个按钮时,它会获取要从数组加载到#animation中的动画页面的文件名.
<div id="nav" data-role="content" style="width: 600px; margin: 0 auto; text-align: center; position: relative; top:450px"> <a href="#animation" data-role="button" data-inline="true" id ="back">Back</a> <a href="#animation" data-role="button" data-inline="true" data-theme="b" id="next">Next</a> <script> var count=0; var link_array = ['baby','bed','book','cat','chair','daddy','dog','mummy','shoe','teddy']; $("#next").click(function(e) { if(count!==9) { $('audio').stop(); count+=1; } $('#animation1wl').load('../Animations/' + link_array[count] + '.html'); $('#animation1wl').trigger('create'); }); $("#back").click(function(e) { if(count !==0) { count-=1; } $('#animation1wl').load('../Animations/' + link_array[count] + '.html'); $('#animation1wl').trigger('create'); }); </script> </div> <div id="animation" data-role="content" style="width: 600px; margin: 0 auto; text-align: left">Problem Loading Resource LNW</div>
当我单击前进或后退按钮时,我希望加载到#animation的上一个动画中的音频停止播放..
这是在#animation中呈现的代码
<div id="animation1wl" data-role="content" style="width: 600px; margin: 0 auto; text-align: left" class="ui-content" role="main"> <style> body { margin: 0px; padding: 0px; } </style> <div id="container"><div style="position: relative; display: inline-block; width: 578px; height: 400px;" class="kineticjs-content"><canvas width="578" style="width: 578px; height: 400px; position: absolute;" height="400"></canvas><canvas width="578" style="width: 578px; height: 400px; position: absolute;" height="400"></canvas></div></div> <script src="scripts/kinetic-v4.3.2.min.js"></script> <script src="scripts/jquery-1.9.1.js"></script> <script> /*BABY SCENE*/ var stage = new Kinetic.Stage({ container: 'container',height: 400 }); var babyLayer = new Kinetic.Layer(); var backLayer = new Kinetic.Layer(); var imageObj = new Image(); var backObj = new Image(); imageObj.onload = function() { var baby = new Kinetic.Image({ x: stage.getWidth() / 2 -100,opacity: 0.0 }); var background = new Kinetic.Image({ x: 0,opacity: 0.0 }); // add the shape to the layer babyLayer.add(baby); backLayer.add(background); // add the layer to the stage stage.add(babyLayer); stage.add(backLayer); babyLayer.moveToTop(); babyLayer.draw(); /*ANIMATION TIMELINE * * FIRST EVENT: FADE IN BABY * SECOND EVENT: BABY TRANSITION * THIRD EVENT: FADE IN BACKGROUND */ /*1) Fade in Baby*/ setTimeout(function() { baby.transitionTo({ opacity: 1,duration: 1 }); },200); setTimeout(function() { /*JQuery Baby Speech*/ $(document).ready(function() { var babySpeech = document.createElement('audio'); babySpeech.setAttribute('src','../Animations/sounds/babyspeech.mp3'); babySpeech.setAttribute('autoplay','autoplay'); //audioElement.load() $.get(); babySpeech.addEventListener("load",function() { babySpeech.play(); },true); }); },800); /*2) Baby Transition*/ setTimeout(function() { baby.transitionTo({ x: 140,duration: 3 }); },3000); setTimeout(function() { /*JQuery Baby Giggle*/ $(document).ready(function() { var baby = document.createElement('audio'); baby.setAttribute('src','../Animations/sounds/baby.mp3'); baby.setAttribute('autoplay','autoplay'); //audioElement.load() $.get(); baby.addEventListener("load",function() { baby.play(); },3000); /*3) Fade in Background*/ setTimeout(function() { background.transitionTo({ opacity: 1,3200); setTimeout(function() { /*Second JQuery Baby Speech*/ $(document).ready(function() { var babySpeech = document.createElement('audio'); babySpeech.setAttribute('src',8700); console.log($('animation1wl').find('audio')[0]); }; imageObj.src = '../Animations/images/baby.png'; backObj.src = '../Animations/images/background/babyroom.jpg'; </script> </div>
任何帮助都会很棒..
非常感谢.
解决方法
你可以这样做:
$('audio').each(function(){ this.pause(); // Stop playing this.currentTime = 0; // Reset time });