首页 > 电脑专区 > 电脑教程 >

[AS3.0编程教学]最全的声音控制方法

来源:互联网 2023-02-21 22:22:33 118

Oqi办公区 - 实用经验教程分享!

Oqi办公区 - 实用经验教程分享!

网上做flash音乐播放器的人不少,这个作品主要是对声音的外部读取,然后保存,然后控制播放,暂停,停止等操作,今天这个作品就是向大家展示这些操作的方法。Oqi办公区 - 实用经验教程分享!

Oqi办公区 - 实用经验教程分享!

Oqi办公区 - 实用经验教程分享!

工具/原料

  • FlashCS3(及其以上版本),mp3格式音乐文件一个br />/

步骤/方法

  • 1

    首先我们新建一个文件,在舞台上摆出下面这些按钮,我们今天对这个声音文件的操纵就如按钮所示:Oqi办公区 - 实用经验教程分享!

    [AS3.0编程教学]最全的声音控制方法Oqi办公区 - 实用经验教程分享!

  • 2

    动手之前我们按下Ctrl Shift F12,打开ActionScript设置,将“自动申明舞台对象”打钩取消,我们将每个对象自己用Public声明,这样做的好处是开发时每个元件的属性方便引用和提醒。Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    [AS3.0编程教学]最全的声音控制方法Oqi办公区 - 实用经验教程分享!

  • 3

    我们新建一个文档类,首先声明舞台上这些按钮,并定义声音变量:testSound,控制变量testChannel,testTrans,testPosition。Oqi办公区 - 实用经验教程分享!

    public var btnPlay:SimpleButton;Oqi办公区 - 实用经验教程分享!

    public var btnPause:SimpleButton;Oqi办公区 - 实用经验教程分享!

    public var btnStop:SimpleButton;Oqi办公区 - 实用经验教程分享!

    public var btnQuick:SimpleButton;Oqi办公区 - 实用经验教程分享!

    public var btnVocUp:SimpleButton;Oqi办公区 - 实用经验教程分享!

    public var btnVocDown:SimpleButton;Oqi办公区 - 实用经验教程分享!

    public var btnPanUp:SimpleButton;Oqi办公区 - 实用经验教程分享!

    public var btnPanDown:SimpleButton;Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    private var testSound:Sound;Oqi办公区 - 实用经验教程分享!

    private var testChannel:SoundChannel;Oqi办公区 - 实用经验教程分享!

    private var testTrans:SoundTransform;Oqi办公区 - 实用经验教程分享!

    private var testPosition:Number=0;Oqi办公区 - 实用经验教程分享!

    [AS3.0编程教学]最全的声音控制方法Oqi办公区 - 实用经验教程分享!

  • 4

    首先用下面代码将一首叫做“test.mp3"的音乐加载到舞台。Oqi办公区 - 实用经验教程分享!

    public function TestSoundMain()Oqi办公区 - 实用经验教程分享!

    {Oqi办公区 - 实用经验教程分享!

    testSound = new Sound();Oqi办公区 - 实用经验教程分享!

    testChannel=new SoundChannel();Oqi办公区 - 实用经验教程分享!

    testTrans = new SoundTransform();Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    testSound.load(new URLRequest("test.mp3"));Oqi办公区 - 实用经验教程分享!

    testSound.addEventListener(Event.COMPLETE,soundLoadOver);Oqi办公区 - 实用经验教程分享!

    }Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    private function soundLoadOver(e:Event):voidOqi办公区 - 实用经验教程分享!

    {Oqi办公区 - 实用经验教程分享!

    testSound.removeEventListener(Event.COMPLETE, soundLoadOver);Oqi办公区 - 实用经验教程分享!

    soudLoad = true;Oqi办公区 - 实用经验教程分享!

    }Oqi办公区 - 实用经验教程分享!

    [AS3.0编程教学]最全的声音控制方法Oqi办公区 - 实用经验教程分享!

  • 5

    播放按钮功能。控制音乐播放的按钮,单击后音乐开始播放,并记录音乐的SoundChannel属性。为了防止连击,我们定义一个isSoundPlay布尔变量判断音乐是否在播放中。Oqi办公区 - 实用经验教程分享!

    //播放按钮功能Oqi办公区 - 实用经验教程分享!

    private function playBtnEvent():voidOqi办公区 - 实用经验教程分享!

    {Oqi办公区 - 实用经验教程分享!

    btnPlay.addEventListener(MouseEvent.CLICK, soundPlay);Oqi办公区 - 实用经验教程分享!

    }Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    private function soundPlay(e:MouseEvent):voidOqi办公区 - 实用经验教程分享!

    {Oqi办公区 - 实用经验教程分享!

    if (isSoundPlay) return;Oqi办公区 - 实用经验教程分享!

    isSoundPlay = true;Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    testChannel = testSound.play(testPosition);Oqi办公区 - 实用经验教程分享!

    }Oqi办公区 - 实用经验教程分享!

    [AS3.0编程教学]最全的声音控制方法Oqi办公区 - 实用经验教程分享!

  • 6

    暂停 按钮功能,该按钮让音乐暂停掉,为了能继续播放,我们需要记录下此时testChannel的位置,然后播放按钮单击时可以继续播放Oqi办公区 - 实用经验教程分享!

    //暂停按钮功能Oqi办公区 - 实用经验教程分享!

    private function pauseBtnEvent():voidOqi办公区 - 实用经验教程分享!

    {Oqi办公区 - 实用经验教程分享!

    btnPause.addEventListener(MouseEvent.CLICK, soudPause);Oqi办公区 - 实用经验教程分享!

    }Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    private function soudPause(e:MouseEvent):voidOqi办公区 - 实用经验教程分享!

    {Oqi办公区 - 实用经验教程分享!

    if (!isSoundPlay) return;Oqi办公区 - 实用经验教程分享!

    isSoundPlay = false;Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    testPosition = testChannel.position;Oqi办公区 - 实用经验教程分享!

    testChannel.stop();Oqi办公区 - 实用经验教程分享!

    }Oqi办公区 - 实用经验教程分享!

    [AS3.0编程教学]最全的声音控制方法Oqi办公区 - 实用经验教程分享!

  • 7

    停止按钮功能,单击后音乐停止播放,记录位置归0.Oqi办公区 - 实用经验教程分享!

    //停止按钮功能Oqi办公区 - 实用经验教程分享!

    private function stopBtnEvent():voidOqi办公区 - 实用经验教程分享!

    {Oqi办公区 - 实用经验教程分享!

    btnStop.addEventListener(MouseEvent.CLICK, soundStop);Oqi办公区 - 实用经验教程分享!

    }Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    private function soundStop(e:MouseEvent):voidOqi办公区 - 实用经验教程分享!

    {Oqi办公区 - 实用经验教程分享!

    isSoundPlay = false;Oqi办公区 - 实用经验教程分享!

    testPosition = 0Oqi办公区 - 实用经验教程分享!

    testChannel.stop();Oqi办公区 - 实用经验教程分享!

    }Oqi办公区 - 实用经验教程分享!

    [AS3.0编程教学]最全的声音控制方法Oqi办公区 - 实用经验教程分享!

  • 8

    快进声音。单击该按钮时,我们让声音从当前位置向前播放500毫秒,也就是快进半秒。Oqi办公区 - 实用经验教程分享!

    //快进按钮功能Oqi办公区 - 实用经验教程分享!

    private function qucikBtnEvent():voidOqi办公区 - 实用经验教程分享!

    {Oqi办公区 - 实用经验教程分享!

    btnQuick.addEventListener(MouseEvent.CLICK, soudQuickPlay);Oqi办公区 - 实用经验教程分享!

    }Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    private function soudQuickPlay(e:MouseEvent):voidOqi办公区 - 实用经验教程分享!

    {Oqi办公区 - 实用经验教程分享!

    if (!isSoundPlay) return;Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    testPosition = testChannel.position;Oqi办公区 - 实用经验教程分享!

    testChannel.stop();Oqi办公区 - 实用经验教程分享!

    testChannel = testSound.play(testPosition 500);Oqi办公区 - 实用经验教程分享!

    }Oqi办公区 - 实用经验教程分享!

    [AS3.0编程教学]最全的声音控制方法Oqi办公区 - 实用经验教程分享!

  • 9

    设定声音的音量增加。控制音量就需要soundTransform对象了,它其实是testChanel的soundTransform属性而已,通过它来控制音量。Oqi办公区 - 实用经验教程分享!

    //音量增加Oqi办公区 - 实用经验教程分享!

    private function volumeUpBtnEvent():voidOqi办公区 - 实用经验教程分享!

    {Oqi办公区 - 实用经验教程分享!

    btnVocUp.addEventListener(MouseEvent.CLICK, upSoudVoc);Oqi办公区 - 实用经验教程分享!

    }Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    private function upSoudVoc(e:MouseEvent):voidOqi办公区 - 实用经验教程分享!

    {Oqi办公区 - 实用经验教程分享!

    if (!isSoundPlay) return;Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    testTrans = testChannel.soundTransform;Oqi办公区 - 实用经验教程分享!

    var addedVoc:Number = testTrans.volume > 1?1:(testTrans.volume Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    0.05);Oqi办公区 - 实用经验教程分享!

    testTrans.volume = addedVoc;Oqi办公区 - 实用经验教程分享!

    testChannel.soundTransform = testTrans;Oqi办公区 - 实用经验教程分享!

    }Oqi办公区 - 实用经验教程分享!

    [AS3.0编程教学]最全的声音控制方法Oqi办公区 - 实用经验教程分享!

  • 9此文章非法爬取自百度经验
  • 10

    设定声音的音量减小。Oqi办公区 - 实用经验教程分享!

    //音量减小Oqi办公区 - 实用经验教程分享!

    private function volumeDownBtnEvent():voidOqi办公区 - 实用经验教程分享!

    {Oqi办公区 - 实用经验教程分享!

    btnVocDown.addEventListener(MouseEvent.CLICK, downSoundVoc);Oqi办公区 - 实用经验教程分享!

    }Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    private function downSoundVoc(e:MouseEvent):voidOqi办公区 - 实用经验教程分享!

    {Oqi办公区 - 实用经验教程分享!

    if (!isSoundPlay) return;Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    testTrans = testChannel.soundTransform;Oqi办公区 - 实用经验教程分享!

    var downVoc:Number = testTrans.volume 0?0:(testTrans.volume -Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    0.05);Oqi办公区 - 实用经验教程分享!

    testTrans.volume = downVoc;Oqi办公区 - 实用经验教程分享!

    testChannel.soundTransform = testTrans;Oqi办公区 - 实用经验教程分享!

    }Oqi办公区 - 实用经验教程分享!

    [AS3.0编程教学]最全的声音控制方法Oqi办公区 - 实用经验教程分享!

  • 11

    设定声音的平衡度向右,点击此按钮声音的平衡性会右移,直到变成右声道。Oqi办公区 - 实用经验教程分享!

    //平衡向右移动Oqi办公区 - 实用经验教程分享!

    private function panRightBtnEvent():voidOqi办公区 - 实用经验教程分享!

    {Oqi办公区 - 实用经验教程分享!

    btnPanUp.addEventListener(MouseEvent.CLICK, upSoundPan);Oqi办公区 - 实用经验教程分享!

    }Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    private function upSoundPan(e:MouseEvent):voidOqi办公区 - 实用经验教程分享!

    {Oqi办公区 - 实用经验教程分享!

    if (!isSoundPlay) return;Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    testTrans = testChannel.soundTransform;Oqi办公区 - 实用经验教程分享!

    var addedPan:Number = testTrans.pan > 1?1:(testTrans.pan 0.05);Oqi办公区 - 实用经验教程分享!

    testTrans.pan = addedPan;Oqi办公区 - 实用经验教程分享!

    testChannel.soundTransform = testTrans;Oqi办公区 - 实用经验教程分享!

    }Oqi办公区 - 实用经验教程分享!

    [AS3.0编程教学]最全的声音控制方法Oqi办公区 - 实用经验教程分享!

  • 12

    设定声音的平衡度向左,点击此按钮声音的平衡性会左移,直到变成左声道。Oqi办公区 - 实用经验教程分享!

    //平衡向左移动Oqi办公区 - 实用经验教程分享!

    private function panLeftBtnEvent():voidOqi办公区 - 实用经验教程分享!

    {Oqi办公区 - 实用经验教程分享!

    btnPanDown.addEventListener(MouseEvent.CLICK, downSoundPan);Oqi办公区 - 实用经验教程分享!

    }Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    private function downSoundPan(e:MouseEvent):voidOqi办公区 - 实用经验教程分享!

    {Oqi办公区 - 实用经验教程分享!

    if (!isSoundPlay) return;Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    testTrans = testChannel.soundTransform;Oqi办公区 - 实用经验教程分享!

    var downPan:Number = testTrans.pan 0?0:(testTrans.pan - 0.05);Oqi办公区 - 实用经验教程分享!

    testTrans.pan = downPan;Oqi办公区 - 实用经验教程分享!

    testChannel.soundTransform = testTrans;Oqi办公区 - 实用经验教程分享!

    }Oqi办公区 - 实用经验教程分享!

    [AS3.0编程教学]最全的声音控制方法Oqi办公区 - 实用经验教程分享!

  • 13

    最后别忘了所有你定义的函数都要写到音乐加载完成的那个函数里执行,或者构造函数也可以。就像下面这样子:Oqi办公区 - 实用经验教程分享!

    //加载音乐并控制播放Oqi办公区 - 实用经验教程分享!

    private function soundLoadOver(e:Event):voidOqi办公区 - 实用经验教程分享!

    {Oqi办公区 - 实用经验教程分享!

    testSound.removeEventListener(Event.COMPLETE, soundLoadOver);Oqi办公区 - 实用经验教程分享!

    soudLoad = true;Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    Oqi办公区 - 实用经验教程分享!

    playBtnEvent();Oqi办公区 - 实用经验教程分享!

    pauseBtnEvent();Oqi办公区 - 实用经验教程分享!

    stopBtnEvent();Oqi办公区 - 实用经验教程分享!

    qucikBtnEvent();Oqi办公区 - 实用经验教程分享!

    volumeUpBtnEvent();Oqi办公区 - 实用经验教程分享!

    volumeDownBtnEvent();Oqi办公区 - 实用经验教程分享!

    panRightBtnEvent();Oqi办公区 - 实用经验教程分享!

    panLeftBtnEvent();Oqi办公区 - 实用经验教程分享!

    }Oqi办公区 - 实用经验教程分享!

    [AS3.0编程教学]最全的声音控制方法Oqi办公区 - 实用经验教程分享!

  • 14

    所有这些一个个代码合并到一起,就是我们主的文档类。制作完毕!Oqi办公区 - 实用经验教程分享!

  • 注意事项

    • 我没有写声音加载过程和加载错误的监听,如果你的操作没有声音,那一定是你的声音文件有问题,换个文件试试;还有留意下方的报错提示。Oqi办公区 - 实用经验教程分享!

    • 其实SoundTransform类还有四个读写属性:leftToLeft,leftToRight,rightToLeft,rightToRight,用来设置左右输入在左右扬声器的音量,有兴趣的同学可以细微研究:)

      Oqi办公区 - 实用经验教程分享!

      Oqi办公区 - 实用经验教程分享!

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!Oqi办公区 - 实用经验教程分享!


    标签: 声音教学控制方法

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码