這是參考網路中找到的範例、再加上自己想要的功能,敬請留言指導。

音樂播放+音量大小聲按鈕的練習作品在這裡


(開啟檔案可能需要一些時間,因為此篇我有把音樂檔匯入元件庫,雖然後來改用載入外部音樂,但這個檔案沒有把那個音樂檔拿掉,所以檔案較大)

ActionScript 3.0

說明:

  我參考的範例是:用ActionScript 3.0控制声音音量大小

  執行的時候音樂會直接出現,而且是預設音量最大,所以「音量加大」與「音量減少」的按鈕,一開始只能按「音量減少」按鈕,當你按了「音量減少」按鈕之後,「音量加大」就可以按了。

  如果完全按照他的說明,新開檔案照做一次,這個範例是不會出現錯誤的。

目標:

  我想將這個範例的功能,加進我上一篇的練習裡面。

  所以要把「執行的時候音樂會直接出現」改掉,並且新增「音量加大」與「音量減少」的按鈕、及控制程式。


準備工作:

1。製作「音量加大」與「音量減少」的影片片段元件,設定的實體名稱分別是volumePlus、volumeMinus

請注意

1。由於我是以上一篇練習【ActionScript 3.0】音樂播放+看圖翻頁功能為基礎,再參考用ActionScript 3.0控制声音音量大小這一篇而做修改,因此下面將修改及新增的部份改成紅色。

2。第五行程式中「playsnd.load(new URLRequest("mp3網址"));」,裡面的mp3網址是我暫放的,之後也許會刪除、連結也許會失效,有興趣練習的人請改成其他的mp3網址喔!

以下程式開始

stop();

var playsnd:Sound=new Sound();
var playsndCh:SoundChannel=new SoundChannel();
playsnd.load(new URLRequest("http://www.ehomework.com.tw/Material2/VOICE/002.mp3"));
var playsndTime = 0;

var transformSound:SoundTransform=new SoundTransform();
transformSound.volume = 1;
playsndCh.soundTransform = transformSound;
volumePlus.addEventListener(MouseEvent.CLICK,addVolume);
volumeMinus.addEventListener(MouseEvent.CLICK,reduceVolume);
volumePlus.buttonMode = true;
volumeMinus.buttonMode = true;
stage.addEventListener(Event.ENTER_FRAME,setVolume);
var soundVolume:Number = 10
function setVolume(e:Event):void
{
transformSound.volume = soundVolume / 10;
playsndCh.soundTransform = transformSound;
if (soundVolume==10)
{
volumePlus.enabled = false;
}
else if (soundVolume==0)
{
volumeMinus.enabled = false;
}
else
{
volumePlus.enabled = true;
volumeMinus.enabled = true;
}
}
function addVolume(e:MouseEvent):void
{
if (soundVolume<10)
{
soundVolume += 2;
}
}

function reduceVolume(e:MouseEvent):void
{
if (soundVolume>0)
{
soundVolume -= 2;
}
}


musicStop_mc.buttonMode = true;
musicStart_mc.buttonMode = true;

musicPlayBar_mc.scaleX = 0;

musicStop_mc.addEventListener(MouseEvent.CLICK, doStop);
musicStart_mc.addEventListener(MouseEvent.CLICK, doStart);


function doStop(e:MouseEvent):void
{
if (playsndCh)
{
playsndCh.stop();
playsndCh = null;
playsndTime = 0;
musicStart_mc.gotoAndStop(1);
}
}

function doStart(e:MouseEvent):void
{
if (playsndCh)
{
playsndTime = playsndCh.position;
playsndCh.stop();
playsndCh = null;
musicStart_mc.gotoAndStop(1);
}
else
{
playsndCh = playsnd.play(playsndTime);
musicStart_mc.gotoAndStop(5);
playsndCh.addEventListener(Event.SOUND_COMPLETE, soundComplete);
}
}

function soundComplete(e:Event):void
{
if (playsndCh)
{
playsndCh.stop();
playsndCh = null;
}
playsndTime = 0;
musicPlayBar_mc.scaleX = 0;
musicStart_mc.gotoAndStop(1);
}


this.addEventListener(Event.ENTER_FRAME, doPlayBar);
function doPlayBar(e:Event):void
{
if (playsndCh)
{
musicPlayBar_mc.scaleX = playsndCh.position / playsnd.length;
}
}


nextPage_mc.addEventListener(MouseEvent.CLICK, goNext);
backPage_mc.addEventListener(MouseEvent.CLICK, goBack);

function goNext(e:MouseEvent):void
{
nextFrame();
}

function goBack(e:MouseEvent):void
{
prevFrame();
}


程式結束


後續說明:
 
我這個練習是自己做紀錄當筆記用,還是有問題沒處理,例如

1。在FLASH裡面編輯的時候,只要一按執行,就會出現這個錯誤訊息「Error #1009: 無法存取 Null 物件參考的屬性或方法」,但發布出來的SFW還是可以正常執行。有關這個錯誤,雖然我有去查了一下,(例如這篇FLASH AS3.0的TypeError: Error #1009: 無法存取 Null 物件參考的屬性或方法。)但我看不懂@@(還是我找錯文章?)今天還沒有花很多時間查這個問題,所以也不知道怎麼改善。

2。因為這篇是繼承上一篇練習【ActionScript 3.0】音樂播放+看圖翻頁功能,所以上一篇的切換頁影響musicPlayBar_mc的問題還是存在@@




arrow
arrow

    大俠夫人(Canru) 發表在 痞客邦 留言(5) 人氣()