as中SoundChannel() 和 Sound () 使用说明

作者:袖梨 2022-06-28

引用别人比喻:
SoundChannel 相当于录音机,Sound相当于磁带。

Sound包含的是音乐内容对象,play()方法包含在其中,但没有stop()方法,CS4手册里有说明属性
SoundChannel是个控制体,没有play()方法,但有stop()方法,同时还用来存储比如 声道 等信息

Sound包含在 import flash.media.Sound;
SoundChannel 包含在 import flash.media.SoundChannel;

同时给出相关配合的函数介绍:
URLRequest 可理解为:转换外部路径为程序路径 需导入 import flash.net.URLRequest;


常见的用法:

 代码如下 复制代码

package
{
        import flash.display.Sprite;//不用再介绍这个了吧
        import flash.media.Sound;//声音内容对象必须的
         import flash.media.SoundChannel;//声音控制体的
        import flash.net.URLRequest; //转换路径的
       
        import flash.text.TextField; //创建文本的
        import flash.events.MouseEvent; //鼠标事件的
        import flash.events.Event; //不再作解释

        public class demo1 extends Sprite
        {
                var t:TextField = new TextField();//创建个空的动态文本,在这里创建才能被其他方法访问到
                var playlen:SoundChannel = new SoundChannel();//创建个空的控制体对象,在这里创建才能被其他方法访问到
                var sound1:Sound = new Sound();//创建个空的声音内容对象,在这里创建才能被其他方法访问到
               
                public function demo1()
                {
                        //以下这部分是设置一个动态文本到舞台
                        t.text = "播放"
                        t.x=100;
                        t.y=200;
                        t.selectable=false;
                        stage.addChild(t);

                        //这里是给动态文本添加侦听器,侦听单击事件,单击一下执行一次control()方法
                        t.addEventListener(MouseEvent.CLICK,control)
                       
                        //转换外部音乐路径为src1程序用的音频源
                        var src1:URLRequest = new URLRequest("zzlg.mp3");

                        //将音频源载入sound1对象,这个时间sound1就是一个有内容的对象了
                        sound1.load(src1);
                }
               
                //单击动态文本执行的方法
                function control(e:MouseEvent) {
                        //position是SoundChannel的属性,返回的是当前音乐播放的进度,以ms为单位。
                        // 第一次执行到这里playlen对象还是空的,因为还没有把音乐控制信息存入playlen, 获取到的播放进度为0
                        //如果是每二次执行到这里,将返回播放进度
                        var playlenint = playlen.position;           
               
                        if(t.text == "播放"){
                                t.text = "暂停"
                                //第一次执行到这里由于上面播放进度为0,所以是是第一次播放音乐
                                //否则如果获取到进度不是0,就等于接着播放音乐
                                playlen=sound1.play(playlenint);
                                //这里开始播放音乐,并把同步信息存入playlen控制体, 这时playlen将拥用音乐的所有信息
                        }else {
                                playlen.stop();//停止播放音乐
                                t.text = "播放"
                        }
                }
        }
}

相关文章

精彩推荐