分享

flash声音控制代码

 hdzgx 2017-11-02

声音是多媒体的重要组成元素,恰当、灵活地运用声音往往是多媒体作品的成败关键。Flash作为人们喜爱的多媒体工具,其声音的使用方式也丰富多样,本文探讨了在Flash中使用声音的几种情况,希望能对大家有所帮助。

一、在时间轴中使用声音

这是Flash中声音最常使用的方式,任何一本Flash教材都会讲到这个问题,所以只作简单说明。

在设置一个关键帧后,只要你导入了声音文件,在帧属性面板都能进行该帧的声音设置。声音的同步属性(Sync)主要有以下几种:

1.事件(Event)。用这种方式设置的声音会独立于时间轴播放,只要你没有用其它方式中止,它会一直播放下去直到结束,其最大好处是可以用来设置一些类似循环的播放效果,只要你把它后面的循环属性(Loop)设置得足够大。

2.开始(Start)。其特点是,当该帧开始播放,将停止动画中前面帧调用的声音,只播放当前帧中的声音。

3.停止(Stop)。设置后,将立即停止播放当前帧的声音。

4.数据流(Stream)。设置后,会使动一的播放与声音同步,如果动画下载速度跟不上声音,将跳过相关帧而保持与声音同步。另外,如果在播放中设置了(Stop)动画停止,声音也将停止;但如果使用play()语句,声音又将从停止处接着播放。

二、用ActionScript语句调用声音

Flash提供了强大的脚本编辑功能,几乎能与一些专门的编程语言相媲美,在多媒体方面可谓更胜一筹,用Flash脚本语言调用声音,在无论是效果还是灵活性,都值得一试。

1.加入声音

导入外部声音,按Ctrl+L键,弹出库窗口,选中导入的声音,单击右键,在弹出菜单中选择“链接”菜单项,弹出“链接属性”对话框,先选中“为动作脚本导出”复选框,此时对话框上部的“标识符”一栏将变得可用,在其中输入其标识名,在此我们假设输入为“sd”,此标识将在程序中作为该声音的标志,故多个声音不得使用同一个标识符。

在Flash时间轴上的第一帧输入以下语句:

mysong = new Sound()

mysong.attachSound("sd")

以上语句先定义一个声音事件mysong,再用mysound.attachSound("sd")语句将库中的声音附加到此声音事件上。

2.声音的播放与停止

在需要播放的帧加入“mysong.start()”语句可让声单播放。

需要停止时,加入“mysong.stop()”语句则可。

3.调用外部声音文件

Flash可以在播放时动态加载外部mp3文件,此方法既为多媒体设计提供了更大的灵活性,也能有效地减小作品所占的磁盘空间。实现方法如下(假设同目录下有music.mp3文件):

mysong=new Sound()

mysong.loadSound("music.mp3",false)

说明:第一行语句建立一个声音事件或声音流,第二行将music.mp3加载到声音事件事声音流上,loadSound()语句中的false为可选能数,为false时表示mysound为声音事件,为true时表示mysound为声音流,建议使用声音事件,以便于控制;如果使用声音流,则声音停止后将不能再用mysond.start()播放。

三、声音循环播放

前面说过,在时间轴上设置关键帧的声音同步属性为Event时,输入足够大的循环次数,可使声音产生类似循环播放的效果,但是,这种循环仅是类似而已,一者次数再多,总有播放完毕的时候;二者一旦停止,就很难再次播放。下面,向大家介绍一种用代码实现的真正循环,而且,还可用一个按钮实现声音的播放也停止切换,想播就播,想停就停,岂不快哉。

我们可在时间轴的第一帧加入如下代码:

mysong = new Sound()

mysong.attachSound("sd")

mysong.onSoundComplete = function() {

mysong.start() }

以上代码的第三行是实现循环的关键,它创建了在调用 onSoundComplete 事件时执行的函数,onSoundComplete 为声音播放完毕时自动调用的事件,这样,当声音播放完毕后自动执行mysong.start(),使声音不断播放。如果声音播放时被代码停止( mysong.stop() ),声音是不会重复播放的。

将以上代码加入到一个按钮的动作中并稍加改动,便成为一个控制声音播放与停止的切换按钮。

先在时间轴第一帧代码后加上:

mysong.play() //使声音在动画开始时播放

var soundkey=1 //定义变量soundkey,监视声音播放情况

然后在时间轴上插入一个新层,放一个按钮在上面,选中按钮,按快捷键“F9”,调出动作编辑窗口,输入以下代码:

on(release){

soundkey=-soundkey //使变量值为原值相反数

if(soundkey==1){

mysong.stop()

mysong.start()

} //如果soundkey值为正,则播放声音,mysong.stop()使声音停止后再播,以免声音产生叠加,影响效果

if(soundkey==-1){

mysong.stop()

} //如果soundkey值为负,则声音停止

 

思路二

 

一般我们控制声音的播放、暂停都是先把导入声音定义为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;

}

}

FLASH如何用按钮控制声音

悬赏分:5 - 解决时间:2006-7-21 13:50

我在FLASH有四个背景音乐。我知道怎么用按钮播放一个音乐。但是我想要得效果是四个按钮。播放不同得音乐。并且播放另一首得时间前面得会停止。谢谢啦。。能详细点就好啦。加QQ也行 11537929

问题补充:hanksavin 能不能说得详细点谢谢啦

提问者: csvsbd - 魔法学徒 一级

最佳答案

第一步:新建四个按钮,分别命名为: btn1、btn2、btn3、btn4,注意是变量名,属性栏“按钮”四个字下面的那个框里的;

第二步:新建四个影片剪辑,分别命名为: mc1、mc2、mc3、mc4,注意是变量名,属性栏“影片剪辑”四个字下面的那个框里的;

第三步:分别进入每个影片剪辑进行编辑,第一帧为空帧,接着选中第二帧,把音乐放在第二帧里;

第四步:四个影片剪辑都进行第三步操作,不过在第二帧里放入不同的音乐;

第五步:返回主场景,选中第一帧,按F9弹出脚本面板,写下:

for (i=1; i<=4; i++) {

_root["mc"+i].stop();

}

_root.btn1.onPress = function() {

stopAllSounds();

for (i=1; i<=4; i++) {

_root["mc"+i].gotoAndStop(1);

}

_root.mc1.gotoAndPlay(2);

};

_root.btn2.onPress = function() {

stopAllSounds();

for (i=1; i<=4; i++) {

_root["mc"+i].gotoAndStop(1);

}

_root.mc2.gotoAndPlay(2);

};

_root.btn3.onPress = function() {

stopAllSounds();

for (i=1; i<=4; i++) {

_root["mc"+i].gotoAndStop(1);

}

_root.mc3.gotoAndPlay(2);

};

_root.btn4.onPress = function() {

stopAllSounds();

for (i=1; i<=4; i++) {

_root["mc"+i].gotoAndStop(1);

}

_root.mc4.gotoAndPlay(2);

};

这样就可以了,点按钮1播放mc1里的音乐,点按钮2就播放mc2的,依此类推。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多