Actionscript 3 mp3循环问题Actionscript 3
这太奇怪了,这篇文章不会让我以hello hi或howdy maybe cache issue开头,不管怎样,hello,我对AS3非常陌生,所以我的知识有限,希望各位专业人士能对新来的家伙放轻松:。 我正在建立一个flash网站,里面有一个循环的动画,我添加了一首mp3歌曲作为背景音乐,它也被设置为循环和自动播放。问题是,歌曲比动画长,当动画返回到第1帧时,歌曲与仍在播放的歌曲重叠。我希望这首歌在重新开始播放之前完全结束。是的,可能有一堆代码丢失了,但我离我想要的更近了,只需要你的帮助来润色一下 这是到目前为止的代码Actionscript 3 mp3循环问题Actionscript 3,actionscript-3,loops,mp3,flash-cs5,Actionscript 3,Loops,Mp3,Flash Cs5,这太奇怪了,这篇文章不会让我以hello hi或howdy maybe cache issue开头,不管怎样,hello,我对AS3非常陌生,所以我的知识有限,希望各位专业人士能对新来的家伙放轻松:。 我正在建立一个flash网站,里面有一个循环的动画,我添加了一首mp3歌曲作为背景音乐,它也被设置为循环和自动播放。问题是,歌曲比动画长,当动画返回到第1帧时,歌曲与仍在播放的歌曲重叠。我希望这首歌在重新开始播放之前完全结束。是的,可能有一堆代码丢失了,但我离我想要的更近了,只需要你的帮助来润色一
import flash.events.MouseEvent;
import flash.media.Sound;
import flash.net.URLRequest;
//var codes
var AutoPlay:Boolean=true;
var isPlaying:Boolean=false;
var pausePosition:Number=0;
var myMusic:Sound=new Sound();
var soundFile:URLRequest=new URLRequest("Fluke.mp3");
myMusic.load(soundFile);
var channel:SoundChannel;
//if commands
if (AutoPlay==true) {
channel=myMusic.play(pausePosition);
isPlaying=true;
}
//pausebutton functions
pause_btn.addEventListener(MouseEvent.CLICK, pauseSound);
function pauseSound(e:MouseEvent):void
{
if (isPlaying == false) {
channel = myMusic.play(pausePosition);
isPlaying =true;
}else{
pausePosition=channel.position;
channel.stop();
isPlaying=false;
}
}
//playbutton functions
play_btn.addEventListener(MouseEvent.CLICK,playMus ic);
function playMusic(event:MouseEvent):void
{ if (isPlaying== false) {
channel=myMusic.play(pausePosition);
isPlaying=true;
}
}
感谢Josha,这是完整的工作代码,我添加了一个.addEventListener,以便歌曲在播放结束后循环播放。
我还不能发表评论,所以必须使用答案 您是否将代码作为单独的文件放置在不同的文件中;或者该代码是否放置在动画的第一帧 如果是后者,那你确实会听到重叠的声音。由于每次播放头返回第1帧时都会执行actionscript代码;创建新的声音对象并开始播放该声音 一个简单的解决方案是在最后一帧创建关键帧,并添加以下动作脚本:
gotoAndPlay(2);
这将从第2帧开始循环动画,跳过动作脚本
另一个可能有效的解决方案是您必须对其进行测试:
import flash.events.MouseEvent;
import flash.media.Sound;
import flash.net.URLRequest;
//var codes
var AutoPlay:Boolean=true;
var isPlaying:Boolean;
var pausePosition:Number;
var myMusic:Sound;
var soundFile:URLRequest;
var channel:SoundChannel;
// only create music and register event listeners one time
if (myMusic == null)
{
soundFile = new URLRequest("Fluke.mp3");
myMusic = new Sound();
myMusic.load(soundFile);
pausePosition = 0;
if (AutoPlay)
{
channel = myMusic.play(pausePosition);
isPlaying = true;
}
else
{
isPlaying = false;
}
pause_btn.addEventListener(MouseEvent.CLICK, pauseSound);
play_btn.addEventListener(MouseEvent.CLICK, playMusic);
}
//playbutton functions
function pauseSound(e:MouseEvent):void
{
if (isPlaying == false) {
channel = myMusic.play(pausePosition);
isPlaying =true;
}else{
pausePosition=channel.position;
channel.stop();
isPlaying=false;
}
}
//playbutton functions
function playMusic(event:MouseEvent):void
{
if (isPlaying== false) {
channel=myMusic.play(pausePosition);
isPlaying=true;
}
}
老兄,太谢谢你了,我想弄明白这件事快发疯了。我必须添加一个事件监听器,这样它才能循环。对于所有像我这样的新手来说,感谢Josha,完整的工作代码在我的第一篇文章中编辑;如果要添加更多actionscript,您可能需要查看如何将MovieClip链接到外部actionscript文件。
import flash.events.MouseEvent;
import flash.media.Sound;
import flash.net.URLRequest;
//var codes
var AutoPlay:Boolean=true;
var isPlaying:Boolean;
var pausePosition:Number;
var myMusic:Sound;
var soundFile:URLRequest;
var channel:SoundChannel;
// only create music and register event listeners one time
if (myMusic == null)
{
soundFile = new URLRequest("Fluke.mp3");
myMusic = new Sound();
myMusic.load(soundFile);
pausePosition = 0;
if (AutoPlay)
{
channel = myMusic.play(pausePosition);
isPlaying = true;
}
else
{
isPlaying = false;
}
pause_btn.addEventListener(MouseEvent.CLICK, pauseSound);
play_btn.addEventListener(MouseEvent.CLICK, playMusic);
}
//playbutton functions
function pauseSound(e:MouseEvent):void
{
if (isPlaying == false) {
channel = myMusic.play(pausePosition);
isPlaying =true;
}else{
pausePosition=channel.position;
channel.stop();
isPlaying=false;
}
}
//playbutton functions
function playMusic(event:MouseEvent):void
{
if (isPlaying== false) {
channel=myMusic.play(pausePosition);
isPlaying=true;
}
}