Leya 发表于 2008-3-28 10:14:23

在FLASH中如何精确控制声音的开始暂停

明白以下代码问题就迎刃而解:
sd=newSound();
sd.attachSound("loop");
begin=0;
play_status=false;
play_now.onPress=function(){
if(!play_status){
sd.start(begin);
play_status=true;
}
}
pause_now.onPress=function(){
if(play_status){
begin=sd.position/1000;
sd.stop();
play_status=false;
}
}
stop_now.onPress=function(){
begin=0;
sd.stop();
play_status=false;
}
sd.onSoundComplete=function(){
play_status=false;
}
stop();

另解:

一般我们控制声音的播放、暂停都是先把导入声音定义为stream的方式来实现的。这里介绍一下用Sound对象来实现的方法:

1、导入声音文件,例子中用Windows中的“WindowsLogonSound.wav”

2、打开library右键点导入的声音,选Linkage,在对话框中勾上ExportforActionScript,其他可以照默认的不用改。

3、在第一帧写如下AS:
song=newSound();//定义一个名为song的声音对象
song.attachSound("WindowsLogonSound.wav");//绑定声音对象为WindowsLogonSound.wav,此处引号内就是在2中对话框中设置的Identifier。
play_status=false;//用于检测是否在播放中,防止重复播放
song.onSoundComplete=function(){//播放结束则触发的事件
sp=0;
play_status=false;
};

4、建立3个BT:start、pause和stop以控制播放、暂停。

5、start的AS:
on(release){
if(play_status==false){//如果没有开始播放
song.start(sp);//播放声音,开始时变量sp没有赋值,默认从头开始放,如果已经赋值,则按相应值播放,单位秒。
play_status=true;//播放状态为真
}
}

6、pause的AS:
on(release){
if(play_status==true){
sp=song.position/1000;//在停止前获取当前播放的位置,单位是毫秒
song.stop();
play_status=false;
}
}

7、stop的AS:
on(release){
if(play_status==true){
sp=0;
song.stop();
play_status=false;
}
}
页: [1]
查看完整版本: 在FLASH中如何精确控制声音的开始暂停