
Flash里控制声音播放停止的按钮怎么做?
RT我的声音要从第25帧开始播放循环具体怎么做?vars=newSound();//新建声音//在库中设置声音的链接属性,标识符设为sound.mp3,链接设在第一帧导出...
RT我的声音要从第25帧开始播放 循环具体怎么做? var s = new Sound();//新建声音
//在库中设置声音的链接属性,标识符设为sound.mp3,链接设在第一帧导出
s.attachSound("sound.mp3");//从库中加载此链接标识的声音
var played = 0;//定义初始声音从0秒处开始播放
pauseed = false;//标记变量,初始为暂停状态
//在场景中建一按钮,命名btn_mc
btn_mc.onRelease = function(){
if(pauseed){
stop();//停止时间轴
s.stop();//停止声音
played = s.position;//当前声音所播放的毫秒数
pauseed = false;//标记变量,此时为暂停状态
}else{
play();//播放时间轴
s.start(played / 1000, 999);//从当前暂停的声音秒数开始播放,播放999遍
pauseed = true;//标记变量,此时为播放状态
}
} 这段代码里的s是什么?我在按钮上写了这段代码 导出弹出这个错误框 这段代码有错?还是?所以希望能具体说下谢谢 展开
//在库中设置声音的链接属性,标识符设为sound.mp3,链接设在第一帧导出
s.attachSound("sound.mp3");//从库中加载此链接标识的声音
var played = 0;//定义初始声音从0秒处开始播放
pauseed = false;//标记变量,初始为暂停状态
//在场景中建一按钮,命名btn_mc
btn_mc.onRelease = function(){
if(pauseed){
stop();//停止时间轴
s.stop();//停止声音
played = s.position;//当前声音所播放的毫秒数
pauseed = false;//标记变量,此时为暂停状态
}else{
play();//播放时间轴
s.start(played / 1000, 999);//从当前暂停的声音秒数开始播放,播放999遍
pauseed = true;//标记变量,此时为播放状态
}
} 这段代码里的s是什么?我在按钮上写了这段代码 导出弹出这个错误框 这段代码有错?还是?所以希望能具体说下谢谢 展开
3个回答
2013-06-08
展开全部
For example: mysound=new Sound(); //创建声音对象 mysound.attachSound("sound1"); // 链接声音sound1. 这里要先对声音的链接属性进行设置,两个选项 (a.为ActionScript 运行导出 b. 在第一帧导出)都要打勾.标识符 不能为空,在as中对声音的引用要用到.这里标识符是sound1. mysound.start(); //声音开始播放. Sound functions: <1> mysound.start(offsettime,loop) //offsettime:时间偏移量,单位s. loop,循环次数.这句话表 示声音从offsettime开始播放到声音结束,播放loop次.(BTW,做声音开关的时候,本来想通过 offsettime来让动画和声音同步的,发现根本不好用.特别是声音文件导出时如果压缩了,那通过这 个来同步更是没戏. <2>mysound.stop(); <3>mysound.setVolume(volume); volume:0-100. 0是最低音量,100最高.(通过按钮操作,设置 音量做声音开关时发现,点击按钮,改变音量时,声音会从头开始播放,根本不是只改变当前时间及 以后播放的声音音量) <4>mysound.getVolume(); <5>mysound.setPan(pan) pan: -100到100 .这个是左右声道均衡值. <6>mysound.getPan() <7>mysound.duration() //声音持续播放时间 <8>mysound.position() //声音播放的当前时间 <9>mysound.onSoundComplete() {mysound.start();} //通过这个语句可以让声音无限制循环. mysound.onSoundComplete(){}//是声音结束时需要执行的操作 还有两个系统函数:getTimer() 获取动画播放的时间 stopAllSounds() 合理应用上面的声音对象方法或函数能够满足flash 对声音控制的一般需求.比如,1.可以做声音开关.简单的控制声音的 播放和停止.2.做暂停按钮,(flash本身没有提供暂停的函数)用mysound.position() 记录声音停止时的位置,下次播 放的时候从这个位置播放.3.背景音乐的无限循环.mysound.onSoundComplete() {mysound.start();} 经典案例:我做一个flash ,遇到这样的需求:我的音乐比较长且完整而且需要和画面配合,不是简单的声音循环.又需要做个声音开关按钮,开关控制声音播放时,声音要从和画面同步的声音处开始播放而不能从头开始播放.这样的话按钮代码on(press) {mysound.start();} 肯定是不能满足需求了.于是我试图通过下面几种方法解决问题:方法一:1.在动画开始时定义一个变量并赋值. var starttime=getTimer(); // record the start time of flash2.在按钮"on" 上增加这样的代码: on(press){ r_time=(getTimer()-starttime)/1000; //想获得动画从开始到点击按钮时总共播放的时间.getTimer()获得的时间 单位是ms. mysound.start(r_time,1); //声音从r_time处开始播放.循环一次 }照理说,这样应该让声音同步才是,但事实结果是 声音和动画在 声音关闭--再次开始播放后无法同步.方法二:通过设置声音音量来做声音开关.我想着这种方法只是改变一下音量,并没有让声音真正停止,声音应该和动画同步播放才是.事实结果是---声音会从头播放,无法同步.也不能达到我的要求.开关按钮代码: on(press){ //stop button mysound.setVolume(0); } on(press){ //play button mysound.setVolume(100); } 很奇怪的是,声音也有fade in 和fade out .也就是说volume 能够动态改变的,不明白这样为什么还是不行. 最后网上的一片文章给了我灵感.我通过下面的方法解决了我的问题. 1.创建一个mc,把声音sound1拖倒mc的时间轴上.同步方式为数据流.(上面说过了,数据流能让声音和动画很好的同 步.相当于声音流和每帧绑定)mc的帧长和我在主场景需要的声音帧长相同. 2.在主场景创建mc实例.实例名:sd.持续帧长和mc的帧长相同. 3.在主场景添加声音开关按钮,并添加按钮代码. on(press){ //stop按钮 sd.gotoAndStop(455); //455 帧是我mc的最后一帧,这帧已经没有声音 } on(press){ //play button sd.gotoAndPlay(_root._currentframe); //声音从主场景的当然帧这个时间开始播放 }
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询