全Flash动画网站的实现详细教程

http://www.webjx.com/  2008-03-08 08:04:00  来源:经典论坛 diamondian

Webjx核心提示:全Flash动画网站的实现详细教程

六:音乐开关

音乐文件通常是mp3格式,导入到库中后,可以直接在需要的帧上选择插入声音对象,如果全站只有一首背景音乐的话,那么通常不用创建声音对象,直接在关键桢属性中选择声音就可以了,在影片的主时间轴上建立一个开关mc。就可以控制背景音乐的开关。当然也可以控制音量,但是我认为通常情况下,我们并不需要控制印量大小,对于网站来说,我们更多的时候只是需要选择开或者关就够了。。


建立一个mc,位置最好在根时间轴内,因为便于操作,同时结构合理,在mc内部建立一个mc,里面做好开关状态的外观分别放置在两帧,不要忘记写stop(),在这个mc对应的帧上写下如下脚本

[Copy to clipboard] [ - ]
CODE:
_root.soundstatus=="on"
onLoad=function()
    {
        _root.soundstatus="on";
        _root.mySound = new Sound(_level0);
        _root.mySound2 = new Sound(_level1);
        _root.mySound3 = new Sound(_level2);
        _root.mySound4 = new Sound(_level3);
        _root.mySound5 = new Sound(_level4);
        maxvolume=100;
        minvolume=0;
    }
    
onEnterFrame=function()
    {
        if(_root.soundstatus=="on") {step=5}
        if(_root.soundstatus=="off") {step=-5}
        
        maxvolume+=step;
        
        if (maxvolume>100) {maxvolume=100;}
        if (maxvolume<0) {maxvolume=0;}        
    
        _root.mySound.setVolume(maxvolume);
        _root.mySound2.setVolume(maxvolume);
        _root.mySound3.setVolume(maxvolume);
        _root.mySound4.setVolume(maxvolume);
        _root.mySound5.setVolume(maxvolume);
    }
music_btn.onRelease=function(){
    if(_root.soundstatus=="on"){
        _root.soundstatus=="off"
                                music_btn.gotoAndPlay(2)
        }else{
        _root.soundstatus=="on"
music_btn.gotoAndPlay(1)
            }
    }

这段脚本会在点击开关按钮后,音量溅出至没有,再次点击后,音量渐入至100%原理非常简单,这里不再详解,新手朋友请咨询查阅相关资料,这里用了一个标志位(_root.soundstatus)用来记录开关按钮的状态.在使用的时候将以上脚本相应的复制到你的mc里,音量开关就可以实现了。

如果你的网站有多段背景音乐的话,那么这时,你就不可以在时间轴内调用背景音乐了,你可以在主时间轴里的帧里定义你的声音,这样在需要他播放或者停止的时候,你就
可以随时控制了。下面的写法可以作为参考。这里mainsound是一个音乐,pagesound是另外一个音乐,根据我的需要,需要在不同页面播放不同的音乐。

[Copy to clipboard] [ - ]
CODE:
_root.mainsound = new Sound();
_root.mainsound.attachSound("yoursound");
_root.pagesound = new Sound();
_root.pagesound.attachSound("pagesound");
_root.pagesound.stop();//pagesound停止播放
_root.mainsound.start(0,99);//mainsound在0秒后播放99遍


如上的代码当然也可以根据你的需要来定义n个声音,控制播放和停止的部分可以定义该声音之后的任何地方调用。

需要注意的是:创建声音对象的时候,我用的是attach命令,也就是说,这个声音文件已经包含在我的swf中的库里了。这里这样做会增加swf的体积,但是可以保证声音的同步,也就是在你需要播放他的时候马上播放,这个对于flash网站来说是很重要的,如果并不需要同步,那么我们大可用loadSound语句,这样还可以减小swf的体积,将声音文件放在外部,通过相对或者绝对路径来访问他。

在使用attach语句来调用声音文件的时候,该声音文件需要有id,这个id在库面板中进行设定,并且设置成在第一帧导出,才可以访问的到,也就是说在调用语句所在的帧播放的同时,该声音文件一定要已经读取完毕,才可以attach。如果在attach的同时,没有读入该文件或者,没有读取完毕的话,是不能引用得到的,这样就会造成播放失败。

不过这时候会造成一个问题,就是由于音乐文件在第一帧导出,所以会增大第一帧的体积,而loading是第一帧,这样loading就会出现许久也没有显示进度的问题。所以为了既不在第一帧导入,也不影响attach,我用这样的方法解决,这也许不是最好的办法,只是我一直这样用,如果那位兄弟有更官方的方法,请告知。

如图所示,这样,该声音文件在第二帧加载,同时不会自动播放,不占用第一帧的体积,同时也可以保证引用的顺利,不要忘记去掉声音文件linkage的“在第一帧导出”选项。

更多