AS3基础教程-第34课-处理声音(下)-SoundChannel

2025-05-25 16:45:35

如果要停止音乐的播放,我们发现,Sound类里并没有提供stop()方法,如下图所示。那么,要实现音乐的停止,就必须使用另外一个类:SoundChannel本节课详述SoundChannel类的使用

AS3基础教程-第34课-处理声音(下)-SoundChannel

2、这是上节课的代码:var url:String="西海情歌.mp3"var urr:URLRequest=new URLRequest(url)var mysd:Sound=new Sound(urr)mysd.play()已经实现了外部声音的播放。现在我们想要实现下面的目的:单击舞台的任意位置后,声音停止播放。

3、那么,先实现舞台单击的操作。这部分内容在前面章节提及过,也应用过,只不过没有详述步骤,现在详述之。舞台的单击和按钮的单击一模一样,仅是事件源的不同:按钮的事件源是按钮的实例名,舞台的事件源就是stage故此,可以用代码片段面板,但是,直接使用时会有下图的提示,要求必须在舞台上有一个已经设置好了实例名的对象,故此,我们需要先找一个按钮,并设置实例名,然后再操作。新建一个图层,从公用库内任意拖一个按钮到舞台上,在属性面板内设定实例名为anniu,然后用代码片段功能,添加鼠标单击命令

AS3基础教程-第34课-处理声音(下)-SoundChannel

二、SoundChannel类:

1、接下来,进入主题:SoundChannel类首先,需要定义一个SoundChannel类的实例,与声明变量的写法一样,只不过必须用new关键字:var sdcn:SoundChannel=new SoundChannel()将该行代码放置到mysd.play()前面

AS3基础教程-第34课-处理声音(下)-SoundChannel

3、测试影片,效果和上节课一样,一打开flash,就自动播放声音。现在我们在 舞台单击 的响应函数内部,添加停止播放的代码。仅需调用SoundChannel类的stop()方法即可:sdcn.stop()

4、接下来,我们将代码修改的更加复杂一些:仍然是撮劝丛食单击舞台任意位置,实现下面的效果:单击后暂停、再单击继续播放、再单击暂停、再单击继续播放,如此循膣默髻僳环往复。这里,需要注意,SoundChannel类的stop()方法是停止的效果,不是暂停的效果。要实现暂停,必须在停止播放之前记录声音播放的进度,然后使用Sound类的play()方法的第一个参数,就可以实现 继续播放的效果。记录声音播放进度的命令也在SoundChannel类内,乃是一个属性值,名为position ,其返回值是Number数字类型,返回的是播放进度的毫秒数。接下来,我们详述代码

5、首先,定义一个存储播放进度的变量,将其放在所有代码的最上面:var jindu:Number=0然后,在舞台单击的响应函数内部,给这个jindu变量赋值:jindu=sdcn.position注意:该行代码必须放在sdcn.stop()的上面!否则jindu就是0了,重要!

AS3基础教程-第34课-处理声音(下)-SoundChannel

3、这就是载入的魅力,fla文件的体积超级小巧,非常方便文件的共享和修改

4、本课的代码虽然不麻烦,但我思虑再三,还是将源码共享吧。又因为本课和上节课都调用了同一个声音,故此,我将上节课的源码也一并共享。两节课的源码放入了同一个文件夹内,文件夹的名字是33-34

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢