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

明白以下代码问题就迎刃而解:
sd = new Sound();
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中的“Windows Logon Sound.wav”
2、打开library右键点导入的声音,选Linkage,在对话框中勾上Export for ActionScript,其他可以照默认的不用改。
3、在第一帧写如下AS:
song=new Sound(); //定义一个名为song的声音对象
song.attachSound(“Windows Logon Sound.wav”);//绑定声音对象为Windows Logon Sound.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;
}
}
[file=attachments/month_200607/14_102349_sphvsound.rar]点击下载源文件[/file]

未经允许不得转载:Windy's Blog » 在FLASH中如何精确控制声音的开始暂停

赞 (0)