AS3基礎(chǔ)教程-第43課-新增音量調(diào)節(jié)功能
本節(jié)課將在AS3基礎(chǔ)教程中添加一個新的功能,即音量調(diào)節(jié)按鈕。復(fù)制并重命名文件1. 首先,將42.fla文件復(fù)制一份,并將復(fù)制的文件重命名為43.fla。使用Flash CS6打開43.fla文件。繪制
本節(jié)課將在AS3基礎(chǔ)教程中添加一個新的功能,即音量調(diào)節(jié)按鈕。
復(fù)制并重命名文件
1. 首先,將42.fla文件復(fù)制一份,并將復(fù)制的文件重命名為43.fla。使用Flash CS6打開43.fla文件。
繪制音量調(diào)節(jié)按鈕
2. 為了實現(xiàn)音量調(diào)節(jié)功能,我們需要繪制一個音量調(diào)節(jié)按鈕。該按鈕由一個圓形和一個長條構(gòu)成。
- 新建一個圖層,命名為“音量_背景”。
- 為了方便起見,我們可以直接從庫面板中拖動已經(jīng)繪制好的元件1到舞臺上,然后適當(dāng)縮短其長度,并在屬性面板中給它設(shè)置一個實例名為yinliang_bg_mc。
接下來,我們開始繪制音量調(diào)節(jié)按鈕。
- 可以使用庫中的bft_mc。
- 新建一個圖層,命名為“音量_按鈕”。
- 將庫中的bft_mc直接拖動到舞臺上,并在屬性面板中給它設(shè)置一個實例名為yinliang_yuan_mc。
拖動效果實現(xiàn)
為了實現(xiàn)拖動效果,我們需要添加以下代碼:
```
yinliang_yuan_(_DOWN, startDragButton);
(_UP, stopDragButton);
function startDragButton(event:MouseEvent):void {
yinliang_yuan_(true, new Rectangle(a, b, c, d));
}
function stopDragButton(event:MouseEvent):void {
yinliang_yuan_();
}
```
- `startDrag()`方法用于開始拖動,它有兩個參數(shù)。第一個參數(shù)是布爾值,true表示以對象的中心被鼠標(biāo)位置鎖定,不管鼠標(biāo)是否按下;false表示只有在鼠標(biāo)點擊按鈕時才會移動,默認值為false。
- 第二個參數(shù)是一個矩形范圍,用于約束拖動的范圍。對象被拖動時不能超出這個范圍,默認為null,即沒有約束。
- `new Rectangle(a,b,c,d)`代碼定義了一個矩形范圍。其中a、b、c、d分別代表x坐標(biāo)、y坐標(biāo)、寬度和高度。例如,`new Rectangle(50,80,200,100)`表示在舞臺上的(50,80)位置處,有一個寬度為200,高度為100的矩形。
- `stopDrag()`方法用于停止拖動,無需參數(shù)。
修改音量
聲音的音量可以通過設(shè)置SoundChannel對象的soundTransform屬性來實現(xiàn)。首先,創(chuàng)建一個SoundTransform對象,并對其賦值,然后將其賦給SoundChannel的soundTransform屬性。
以下是一個示例,將音量設(shè)置為50%:
```
var soundTransform:SoundTransform new SoundTransform();
soundTransform.volume 0.5; // 音量范圍為0到1
```
測試和添加音量修改代碼
現(xiàn)在,我們來測試一下,看看按鈕是否可以拖動。
然后,添加修改音量的代碼。這部分代碼需要使用soundTransform屬性。首先,定義一個soundTransform對象,并對其進行賦值。最后,在觸發(fā)函數(shù)內(nèi)添加以下代碼:
```
var initialX:Number 197; // yinliang_yuan_mc的初始坐標(biāo)
function tiqi(event:Event):void {
var percentage:Number (yinliang_yuan_mc.x - initialX) / ( - initialX);
soundTransform.volume percentage;
soundTransform;
}
```
- `tiqi()`函數(shù)是觸發(fā)事件的響應(yīng)函數(shù)。
- `percentage`變量用于計算音量的百分比。根據(jù)yinliang_yuan_mc的x坐標(biāo)與初始坐標(biāo)之間的差距,以及舞臺寬度與初始坐標(biāo)之間的差距,計算得出音量的百分比。
- 將計算得到的百分比賦值給soundTransform對象的volume屬性,并將其賦給soundChannel的soundTransform屬性。
最后,將yinliang_yuan_mc放置在最右側(cè),以確保初始聲音音量最大。