Flash中關於聲音的常用命令介紹

來源:互聯網
上載者:User

  先做個簡單的瞭解,FLASH中經常用到的聲音的控制命令以及聲音的屬性有哪些:

1.new Sound()//建立一個新的聲音對象;
2.mysound.attachSound()//載入庫裡的聲音
3.mysound.start()//播放聲音;
4.mysound.getVolume()//讀取聲音的音量
5.mysound.setVolume()//設定音量
6.mysound.getPan()//讀取聲音的平衡值
7.mysound.setPan()//設定聲音的平衡值
8.mysound.position//聲音播放的當前位置
9.mysound.duration//聲音的總長度;


  下面,我們用一個具體的例子來學習這些命令以及屬性的用法:

  各元件的執行個體名參看圖1


為方便學習,我們結合一個具體的例子來實踐一下代碼的編寫.讀者朋友可以先到這裡下載源檔案,下面我將對這個例子中牽涉到的AS做些解釋,以協助大家理解:

點擊這裡下載源檔案


  1.首先看action層的代碼:

mysound=new Sound();//建立一個新的聲音對象,名稱為mysound;
mysound.attachSound("sound");//複製庫裡的聲音給mysound對象,庫裡的目標聲音輸出標示符為sound,關於輸出標示符的添加方法,

參看圖2;

mysound.start(0,10);//開始播放聲音,從第0秒開始,重複10遍
_root.total=int(mysound.duration/1000/60)+"分"+""+(int(mysound.duration/1000)-int(mysound.duration/1000/60)*60)+"秒"//這裡是在total文字框內顯示音樂的總廠,具體的原理參看注意點3;
_root.onEnterFrame=function(){//每播放一幀都觸發下面的函數;
mysound.setVolume((a._x-30));//設定音量,30為音量線的最左端座標,音量線總長為100,a._x表示滑塊的X座標,該座標減去初始位置的座標30就得到當前應有的音量;
mysound.setPan((b._x-80)*2);//設定當前聲音的平衡值,相對於平衡線的中間位置座標(80)進行調節,範圍(-100,100),-100為左聲道出聲,100為右聲道,0為左右平衡;
txt1=mysound.getVolume();//讀取當前音量並在txt1文字框內顯示
txt2=mysound.getPan();//讀取當前平衡值並在txt2文字框內顯示
}
k=0;//初始化k變數,其作用將在下面說明;
_root.bb="現正播放";//讓bb文字框顯示現正播放字樣;


2.控制音量的滑塊上的代碼:


on(press){
startDrag(a,true,30,147,130,147);//按下按鈕不放,則開始拖動滑塊a,拖動範圍 左上右下依次為:30,147,130,147。這些數值的獲得方法,你可以在源檔案相應元件的屬性面板裡看到;
}
on(release){
stopDrag();//松下按鈕則停止拖動
}

3.控制平衡的滑塊上的代碼:

on(press){
startDrag(b,true,30,179,130,179);//按下按鈕不放,則開始拖動滑塊a,拖動範圍 左上右下依次為:30,179,130,179。
}
on(release){
stopDrag();//松下按鈕則停止拖動
}

4.暫停按鈕的代碼:

on(release){
k=k+1;//k是用來統計當前點擊暫停按鈕次數的變數;
if(k%2==1){//奇偶判斷;
mysound.stop();//若為奇數則停止音樂;
_root.b=int(mysound.position/1000);//記錄下停止時播放的位置,賦值給變數b;
_root.bb="停在第"+_root.b+"秒";//在bb文字框內顯示當前停止的位置;
}else{
mysound.start(_root.b);//從上一次停止的位置開始繼續播放;
_root.bb="現正播放";
}
}

5.停止按鈕上的代碼:

on(release){
mysound.stop();//停止音樂
_root.bb="已停止";//顯示音樂停止;
_root.b=0;//點擊次數清零;以便下次統計;
_root.k=1//這點的解釋參看注意點1;
}

6.播放按鈕的代碼:

on(release){
mysound.stop()//為了避免當前現正播放音樂的音樂和再次開始的音樂重複,所以先停止當前音樂;
mysound.start();//開始播放新的音樂
_root.bb="現正播放";
k=0//關於這裡為什麼重新給k賦值,請參看最後的注意點2;
}

  注意:

  1.把這裡的k賦值為1,是為了讓音樂停止後,清除前面對暫停按鈕的操作引起的k值的變化,並且可以讓下一步點暫停按鈕的時候,讓其執行mysound.start(_root.b),從而具有播放按鈕的功能,因為剛剛執行了停止命令。再執行暫停命令是沒有意義的!

  2.把k重新賦值為0,是為了清除前面對暫停按鈕的操作引起的k值的變化.讀者朋友可以去除這句,然後測試,你會發現點了播放按鈕後再點暫停按鈕,會有兩個聲音混雜在一起,這個BUG的出現,正是因為k值在作怪,具體的講,當你進行了若干操作,把k的值變為奇數後,在點播放按鈕,此時音樂開始播放,然後你再點下暫停按鈕,這時候的k值為偶數,那麼會執行mysound.start(_root.b),也就是再開始播放一個音樂,從而導致兩個聲音混雜的現象;到這裡,基本上結束了這些常用命令的介紹,希望對各位讀者有協助。



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。