這是參考網路中找到的範例、再加上自己想要的功能,敬請留言指導。
(開啟檔案可能需要一些時間,因為此篇我有把音樂檔匯入元件庫,雖然後來改用載入外部音樂,但這個檔案沒有把那個音樂檔拿掉,所以檔案較大)
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 (soundVolume0)
{
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的問題還是存在@@