循环声音闪光as3
Posted
技术标签:
【中文标题】循环声音闪光as3【英文标题】:looping sound flash as3 【发布时间】:2016-12-25 05:00:35 【问题描述】:我使用 Flash AS3 为声音创建了一个开/关按钮。这些工作,但每当我按下关闭按钮然后打开按钮时,音乐就不会再次播放?
我认为这是一个循环问题,但我会错吗?如果是循环问题,我不确定使用什么代码。
我还需要为 btnOn 函数添加代码,因为当我打开 .swf 时,声音会自动播放。
下面附上我目前的代码:
var mySound:Sound = new sandstorm(); //(sandstorm is my sound file)
var myChannel:SoundChannel = new SoundChannel();
var lastPosition:Number = 0;
myChannel = mySound.play();
btnOff.addEventListener(MouseEvent.CLICK, onClickPause);
function onClickPause(e:MouseEvent):void
lastPosition = myChannel.position;
myChannel.stop();
干杯:)
【问题讨论】:
"...当我打开 .swf 时,声音会自动播放" 那么您认为这条指令在做什么:myChannel = mySound.play();
?如果您希望在单击时仅发生某些事情,则将该指令放入单击处理函数中。 PS:函数onClickPause
是预期暂停和恢复音频的函数吗?
【参考方案1】:
你可以试试下面的代码。它使用一个按钮来实现音频暂停/恢复功能......
var mySound:Sound = new sandstorm(); //(sandstorm is my sound file)
var myChannel:SoundChannel = new SoundChannel();
var lastPosition:Number = 0;
var audiostate : String = "paused"; //will become either "playing" or "paused"
myChannel = mySound.play(); //this line starts playback
audioState = "playing"; //update because you started playback with above line
btnOff.addEventListener(MouseEvent.CLICK, onPlayPause);
function onPlayPause(e:MouseEvent):void
if (audioState == "playing") //IF already playing
lastPosition = myChannel.position; //note current "audio time" when pausing
myChannel.stop(); //stop playback
audioState = "paused"; //update for next time click is used
else if (audioState == "paused") //or ELSE IF was already paused then...
myChannel = mySound.play(lastPosition); //resume playback
audioState = "playing"; //update for next time click is used
【讨论】:
【参考方案2】:您的代码仅显示事件侦听器 onClickPause(我认为那是您的停止按钮)。但是开始/播放按钮的事件监听器在哪里。在播放按钮上,您必须再次调用播放功能。这是一个很棒的教程:http://www.republicofcode.com/tutorials/flash/as3sound/
【讨论】:
你能发布你的完整代码吗?播放/恢复按钮的代码在哪里?以上是关于循环声音闪光as3的主要内容,如果未能解决你的问题,请参考以下文章