Flash中用按钮控制声音的几种方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Flash课件中声音控制的几种方法(学习几点心得)
在中小学教师开发的课件中,用Flash制作的比例越来越大,而声音作为多媒体课件的重要组成部分,应用得合理与否直接影响到课件整体艺术力的表现。

在八月份的第一期Flash课件制作培训时,我们讲了两种应用声音的控制方法,一种是导入时间轴,用play,stop等命令进行简单控制;另一种是利用组件工具来控制声音的播放。

显然,这两种方法是简单的、易掌握的,但能实现的功能却有所局限。

本文整理了Flash声音控制的另外两种方法,希望对课件制作爱好者有所帮助。

一、用Sound 类的start 方法
很多人在制作一个带配音的Flash
课件时,会设计了两个按钮,一个按钮控制音乐的播放,另一个按钮控制声音的停止。

当单击按钮让音乐停止后,再次单击控制音乐播放的
按钮,音乐却从头开始播放了。

这里可以用Sound 类的start 方法来控制音乐播放。

用Sound 类的start
方法来播放音乐必须给出必要的参数,通过参数控制音乐从停止处开始播放。

否则,音乐就是直接从头开始播放。

用sound类的position属性和start方法结合在一起就可以解决这个问题。

具体操作步骤是:
(1)将音乐导入到“库”中。

右击“库”中的音乐对象,在弹出的快捷菜单中选择“链接”命令,打开“链接属性”对话框,勾选“为动作脚本导出”和“在第一帧导出”复选项,设置标识符为“mySound”。

(2)在第1帧上添加如下脚本:
myMusic = new Sound();//建立一个名为myMusic的声音对象,
myMusic.attachSound("mySound"); //将链接标识符为mySound的音乐捆绑到myMusic对象上。

(3)在播放音乐的按钮上添加如下脚本:
on (press) {
var t=myMusic.position/1000; //计算声音当前播放的位置
myMusic.start(t); //从当前位置开始播放
position 是Sound
类的一个属性,可以获得声音对象播放的当前位置。

在制作Flash动画时,这个属性经常会被用到。

比如制作MP3播放器,如果制作一个控制音乐播放进度的滑块,那么就可以用这个属性来实现相应的算法。

(注意:在操作时要注意字母的大小写)
二、利用影片剪辑来控制声音
(一)导入声音素材
点击【文件】|【导入】|【导入到库】菜单命令,在弹出的【导入到库】对话框中,找到你要导入的声音文件,选中后点击打开按钮,将声音导入到库。

(三)制作声音影片剪辑元件:
(1)点击【插入】|【新建元件】菜单命令,在弹出的新建元件对话中,名称输入“声音”、行为选【影片剪辑】,确定。

(2)选中“图层1”的第1帧,打开属性面板,在声音设置的对话框中,选择你导入
的声音件,并在同步选项中选择数据流,如图1所示。

图1
(3)把声音文件在时间轴上展开。

(4)回到场景,把“声音”影片剪辑元件提到舞台,此时声音影片剪辑元件在舞台只看到一个注册点,用黑箭头工具点击注册点,(选中声音元件)打开属性面板,在属性面板中输入实例名“yinyue”,如图2所示。

图2
(四)制作声音控制元件
(1)点击【插入】|【新建元件】菜单命令,在弹出的新建元件对话中,名称输入“播放和暂停”、行为选【影片剪辑】,确定。

(2)把“图层1”命名为“按钮”,在此图层的第1帧中,执行【窗口】|【其它面板】|【公共库】|【按钮】菜单命令。

提进一个按钮,用来控制“播放”。

(3)给播放按钮添加命令:
on (release) {
gotoAndStop(3);
_root.yinyue.play();
}
(4)在按钮图层的第3帧中插入空白关键帧,在此空白关键帧中,执行【窗口】|【其它面板】|【公共库】|【按钮】菜单命令。

提进一个按钮,用来控制“暂停”,并在第4帧中按F5
插入普通帧。

(5)给暂停按钮添加命令:
on (release) {
gotoAndStop(1);
_root.yinyue.stop();
}
(5)添加图层二,命名为“AS”在“AS”图层的第2帧和第4帧分别输入命令:stop();此时的时间轴面板如图3所示:
图3
(五)场景组装
(1)回到场景,从库里把“播放和暂停”元件提进舞台,放到适当的位置。

选中“播放和暂停”元件,打开属性面板,在属性面板中输入实例名“yinyue”,如图4所示。

图4
(2)在公用库中提入一个按钮用来控制“停止”,点击“停止”按钮,打开动作面板,添加命令:
on (release) {
_root.yinyue.gotoAndStop(1);
_root.play.gotoAndStop(1);
}
(3)添加图层二,在“图层二”的第1帧输入命令:_root.yinyue.stop();
(六)测试影片并保存。

这部分内容可参考:/Article/ShowArticle.asp?ArticleID=3863
音乐的重复播放
1、首先,将音乐导入库。

然后,在库中右击音乐文件——链接,勾选“为动作脚本导出”和“在第一帧导出”复选项,在设置标识符为“aaa”。

2、在时间AS层写下如下代码:
mymusic= new Sound()
mymusic.attachSound("aaa")
mymusic.onSoundComplete = function() {
mymusic.start() } /*声音播放完毕时自动调用的事件,
这样,当声音播放完毕后自动执行mymusic.start(),使声音不断播放。

如果声音播放时被代码停止(mymusic.stop() ),声音是不会重复播放的。

*/ mymusic.play() //使声音在动画开始时播放
var soundkey=1 //定义变量soundkey,监视声音播放情况。

3、在主场景中拖入一个按钮,在按钮上写下如下代码:
on(release){
soundkey=-soundkey//使变量值为原值相反数
if(soundkey==1){
mymusic.stop()
mymusic.start()
} /*如果soundkey值为正,则播放声音,mymusic.stop()使声音停止后
再播,以免声音产生叠加,影响效果*/
if(soundkey==-1){
mymusic.stop()
} //如果soundkey值为负,则声音停止
}
至此完成,按ctrl+enter测试。

音乐的重复播放
1、首先,将音乐导入库。

然后,在库中右击音乐文件——链接,勾选“为动作脚本导出”和“在第一帧导出”复选项,在设置标识符为“aaa”。

2、在主场景中拖入一个按钮,将按钮命名为bofang_btn。

3、在时间AS层写下如下代码:
mymusic= new Sound()
mymusic.attachSound("aaa")
mymusic.onSoundComplete = function() {
mymusic.start() } /*声音播放完毕时自动调用的事件,
这样,当声音播放完毕后自动执行mymusic.start(),使声音不断播放。

如果声音播放时被代码停止(mymusic.stop() ),声音是不会重复播放的。

*/ mymusic.play() //使声音在动画开始时播放
var soundkey=1 //定义变量soundkey,监视声音播放情况。

bofang_btn.onPress=function(){
soundkey=-soundkey//使变量值为原值相反数
if(soundkey==1){
mymusic.stop()
mymusic.start()
} /*如果soundkey值为正,则播放声音,mymusic.stop()使声音停止后
再播,以免声音产生叠加,影响效果*/
if(soundkey==-1){
mymusic.stop()
} //如果soundkey值为负,则声音停止
}
//至此完成,按ctrl+enter测试。

音乐的播放与暂停
1、首先,将音乐导入库。

然后,在库中右击音乐文件——链接,勾选“为动作脚本导出”和“在第一帧导出”复选项,在设置标识符为“aaa”。

2、在主场景中拖入两个按钮,将两个按钮分别命名为bofang_btn和tingzhi_btn。

3、在时间轴面板的AS层写下如下代码:
var mymusic=new Sound();
mymusic.attachSound("aaa");
bofang_btn.onPress=function(){
var t=mymusic.position/1000;
mymusic.stop();
mymusic.start(t);
}
tingzhi_btn.onPress=function(){
mymusic.stop();
}
//至此完成,按ctrl+enter 测试。

代码第五行,加入了mymusic.stop(); 如果不加这句,那么连续点击播放按钮,音乐的音量会不断增大。

对于下面这段代码
bofang_btn.onPress=function(){
var t=mymusic.position/1000;
mymusic.stop();
mymusic.start(t);
我的理解是,当点击bofang_btn按钮时,开始获取音乐播放的位置,并赋值给变量t,然后停止前一个声音,从t处开始播放。

播放、暂停、停止三个按钮控制音乐播放
1、首先,将音乐导入库。

然后,在库中右击音乐文件——链接,勾选“为动作脚本导出”和“在第一帧导出”复选项,在设置标识符为“aaa”。

2、在主场景中拖入三个按钮,将三个按钮分别命名为play_btn、pause_btn、stop_btn。

3、在时间轴面板插入图层命名为“AS”层,在“AS”层写下如下代码:
var mymusic=new Sound;
mymusic.attachSound("aaa");
play_btn.onPress=function(){
mymusic.stop();
mymusic.start(t);
}
pause_btn.onPress=function(){
mymusic.stop();
t=mymusic.position/1000;
}
stop_btn.onPress=function(){
mymusic.stop();
t=0;
}
//至此完成,按ctrl+enter测试。

播放、暂停、停止三个按钮控制音乐播放(播放、暂停按钮合二为一)
1、首先,将音乐导入库。

然后,在库中右击音乐文件——链接,勾选“为动作脚本导出”和“在第一帧导出”复选项,在设置标识符为“moonlight shadow.mp3”。

2、从公用库中拖入两个个按钮到主场景中,将两个按钮分别命名为play_btn、stop_btn,锁定该图层。

3、新建一个图层,从公用库中拖入一个按钮,将这个按钮命名为pause_btn,并把它拖放到play_btn的位置。

3、在时间轴面板插入图层命名为“AS”层,在“AS”层写下如下代码:
var mymusic=new Sound();//创建一个新的声音对象mymusic
mymusic.attachSound("moonlight shadow.mp3");//将声音对象myumusic与库中的音乐moonlight shadow.mp3进行链接
pause_btn._visible=false;//隐藏暂停按钮
play_btn.onPress=function(){//当点击play_btn按钮时,执行大括号内的命令mymusic.start(t);//从t处开始播放
pause_btn._visible=true;//显示暂停按钮
play_btn._visible=false;//隐藏播放按钮
}
pause_btn.onPress=function(){
t=mymusic.position/1000;//获取音乐播放的位置并赋值给变量t
mymusic.stop();//停止播放
pause_btn._visible=false;
play_btn._visible=true;
}
stop_btn.onPress=function(){
mymusic.stop();
t=0;//清除变量
play_btn._visible=true;
pause_btn._visible=false;
}
//至此完成,按ctrl+enter测试。

//在上述代码后加入如下代码,实现当音乐播放完毕后,回到初始状态。

mymusic.onSoundComplete=function(){//音乐播放完毕之后执行大括号内的命令
t=0;
play_btn._visible=true;
pause_btn._visible=false;
}
把播放和暂停真正做到一个按钮上
从公用库拖入两个按钮到舞台,分别命名为pla_pau_btn、stop_btn。

在第一帧写下如下代码
mymusic=new Sound();
mymusic.attachSound("a");
i=1;
pla_pau_btn.onPress=function(){
if (i==1) {//如果变量i等于1执行下面的动作mymusic.start(t);//音乐播放
i= 0;//赋0给变量i
} else {//否则执行下面的动作
t=mymusic.position/1000;
mymusic.stop();//音乐停止
i=1;//赋予1给变量i
}
}
stop_btn.onPress=function(){
mymusic.stop();
t=0;
i=1;
}。

相关文档
最新文档