声音类 的练习

                                                                         播放与停止

砸在舞台添加一个小按钮,然后在第1帧写上如下代码:

import flash.net.URLRequest;

import flash.media.Sound;

import flash.media.SoundChannel;

import flash.events.MouseEvent;

var url:URLRequest = new URLRequest("kate havnevik - solo.mp3");

var sound:Sound = new Sound();

sound.load(url);

var position:Number = 0;

var channel:SoundChannel = new SoundChannel();

btn.label = "播放";

btn.addEventListener(MouseEvent.CLICK,PS);

function PS(e:MouseEvent):void

{

    if(btn.label == "播放")

      {

         channel = sound.play(position);

        btn.label = "停止";

      }

  else

 {

  channel.stop();

  position = channel.position;

  btn.label = "播放";

 }

}

                                                                              播放与暂停

与播放与停止类似,相差不大。

import flash.media.Sound;

import flash.net.URLRequest;

import flash.media.SoundChannel;

import flash.events.MouseEvent;

var sound:Sound = new Sound();

sound.load(new URLRequest("kate havnevik - solo.mp3"));

var p:Number = 0;

var channel:SoundChannel = new SoundChannel();

btn.label = "播放";

btn.addEventListener(MouseEvent.CLICK,PS);

function PS(e:MouseEvent):void

{  

if(btn.label == "播放")

 {  

 channel = sound.play(p);

  btn.label = "暂停";

 }

else

 {  

 p = channel.position;

  channel.stop();

  btn.label = "播放";

 }

}

                                                 加载进度条

import flash.display.Sprite;

import flash.net.URLRequest;

import flash.media.Sound;

import flash.media.SoundChannel;

import flash.events.ProgressEvent;

import flash.events.Event;

//进度条

var bar:Sprite = new Sprite();

bar.graphics.beginFill(0x123456);

bar.graphics.drawRect(0,0,350,20);

bar.graphics.endFill();

addChild(bar);

bar.x = 75;

bar.y = 350;

bar.scaleX = 0;

var bar2:Sprite = new Sprite();

bar2.graphics.beginFill(0x876543);

bar2.graphics.drawRect(0,0,350,20);

bar2.graphics.endFill(); addChild(bar2);

bar2.x = 75;

bar2.y = 350;

bar2.scaleX = 0;

var url:URLRequest = new URLRequest("1.mp3");

var sound:Sound = new Sound();

sound.load(url);

var channel:SoundChannel = new SoundChannel();

sound.addEventListener(ProgressEvent.PROGRESS,Progress);

sound.addEventListener(Event.COMPLETE,addSound);

addEventListener(Event.ENTER_FRAME,changeV);

function Progress(e:ProgressEvent):void

{

 bar.scaleX = e.bytesLoaded/e.bytesTotal;

 trace(e.bytesLoaded/e.bytesTotal)

}

function addSound(e:Event):void

{

 channel = sound.play();

}

function changeV(e:Event):void

{

 bar2.scaleX = channel.position/sound.length ;

 trace(channel.position/sound.length);

}

                                                                      控制声音和声像

import flash.media.Sound;

import flash.media.SoundTransform;

import flash.media.SoundChannel;

import flash.net.URLRequest;

import flash.events.Event;

var snd:Sound = new Sound(new URLRequest("1.mp3"));

var trans:SoundTransform = new SoundTransform(0.6,-1);

var channel:SoundChannel = snd.play(0,1,trans);

var hd:Number = 0;

addEventListener(Event.ENTER_FRAME,aa)

function aa(e:Event):void

{  

  hd+=0.1;

  trans = new SoundTransform(1,Math.sin(hd));

  channel.soundTransform = trans;  

  trace(hd);

}

                                                                                   修改MP3的声音

import flash.media.Sound;

import flash.net.URLRequest;

import flash.events.Event;

import flash.events.SampleDataEvent;

import flash.utils.ByteArray;

var mysound:Sound = new Sound();

var sourceSnd:Sound = new Sound();

var url:URLRequest =new URLRequest("1.mp3");

sourceSnd.load(url);

sourceSnd.addEventListener(Event.COMPLETE,loaded);

function loaded(e:Event):void

{  

mysound.addEventListener(SampleDataEvent.SAMPLE_DATA,processSound);

 mysound.play();

}

function processSound(e:SampleDataEvent):void

{

        var bytes:ByteArray = new ByteArray();

        sourceSnd.extract(bytes,8192);  

       e.data.writeBytes(upOctve(bytes));

}

function upOctve(bytes:ByteArray):ByteArray

{

    var returnBytes:ByteArray = new ByteArray();

    bytes.position = 0;

    while(bytes.bytesAvailable > 0)

    {     

      returnBytes.writeFloat(bytes.readFloat());   

      returnBytes.writeFloat(bytes.readFloat());

           if (bytes.bytesAvailable > 0)     

         {        

            bytes.position += 8;   

         }   

    }  

   return returnBytes;

}

                                           

原文地址:https://www.cnblogs.com/klh5211314/p/2763367.html