编程中声音怎么重复执行
2023-01-23
阅读(417)
问:flash as3中如何在点击一个按钮后实现声音循环播放,说明思路,有代码说明最好
- 答:这样:
var sound:Sound = new Sound( New URLRequest("xxx.mp3"));
var sc:SoundChannel = new SoundChannel();
sc = sound.play();
sc.addEventListener( PLETE , replayhandler );
//重复播放
function replayhandler( e:Event ){
sc.stop();
sc = sound.play(0);
sc.addEventListener( PLETE , replayhandler );
}
原理很简单,就是在声音播放完成的函数中再次添加该侦听器,这样就能不断地重复播放了。
哦 如果在你的代码基础上改的话 那就是:
function xh(e:Event):void
{
gaibian=true;
_channel.stop();
_channel=_sound.play(0);
_channel.addEventListener(PLETE,xh);//添加这句
}
} - 答:1楼的思路是对的,不过不要忘记把播放完之后的声道(SoundChannel)回收掉。按理说flashplayer是可以自动回收的。但是记住!所有拥有监听器的东东是永远无法回收的(内存溢出)。所以请这样修改
function xunhuan(e:Event):void
{
_channel.addEventListener(PLETE,xh);
function xh(e:Event):void
{ gaibian=true;
_channel.stop();
_channel.removeEventListener(PLETE,xh);
_channel=_sound.play(0);
_channel.addEventListener(PLETE,xh);
}
}
问:as3.0编程控制音乐声音一直播放?
- 答:很简单,直接新建一个图层,帧长度等于你总共的长度,里面不要有关键帧,然后选中这个图层,在属性-声音里选择要嵌入的声音文件,将同步的选项改为“开始”和“循环”就OK了,都不用as3。
如果一定要用as3的话也可以,不过这样已经达到要求了,就没有必要了吧~
问:windows编程怎么同时播放两个或者多个声音文件?
- 答:这个应该是个线程同步问题,每次只能响应一个事件,锁住,其他线程挂起,等待处理中的线程退出,其他线程才能进入调用。你可以用音频处理软件把声音处理一下,模拟成你想要的效果。
- 答:你得了解这么一个概念,任何线程都是不能同时运行的。