AS3 音量~當載體被移除場景

ActionScript3.0 2010/02/01 11:23
當載體被移除場景的時候(用LOADER 在LOAD一次)這裡是被覆蓋掉了,可是裡頭的聲音其實還在跑,我猜是因為聲音再撥放時有做一些EVENT的REFERENCE,如此一來GC並不會回收聲音的物件,只是物件從display List中被移除掉了

這時候!小派(一個好朋友)點醒了我~叫我偵測removed_from_stage 的事件,當載體被移除display List中,就把自己裡頭的聲音關掉!

COOL~

再補充一點
我們常會把聲音遷入影隔中,然後配合動畫演出,之前有遇到不知道為什麼,動畫和聲音嵌在同一個MC裡,在下gotoAndPlay gotoAndStop去控制,聲音有時後會像發了瘋一樣重複播放,後來解決方法是,把聲音對照影格再拉一個MC出來專門忙放聲音,動畫的MC在要撥聲音的影閣中下相對應的gotoAndPlay 去控制聲音的MC,雖然這種做法要維護2個地方的影隔,但開關聲音的程式就好寫多了




top
TAG AS3.0, sound

Trackback Address :: http://diary.tw/allenliao/trackback/861

Write a comment


AS3.0 筆記重點11-20項

ActionScript3.0 2007/09/21 12:42
11.使用AS3的XML元件取得一個XML TAG的值時,和沒有定義的判斷方法
import flash.net.*;
import flash.events.*;
var URLstr:String="http://mydomain.com/myxml.xml";
var myXML:XML=new XML();
var myLoader:URLLoader=new URLLoader();
var myRequest:URLRequest=new URLRequest(URLstr);
myLoader.addEventListener(Event.COMPLETE,XMLinit);
myLoader.load(myRequest);
function XMLinit(e:Event):void {
 var myLoader:URLLoader=URLLoader(e.target);
 myXML=XML(myLoader.data);
 trace(myXML.adFilePath=="");//TAG中沒有值傳回true
 trace(myXML.adFilePath222==undefined);//不存在的TAG傳回true
}

12.執行sound.play()會RETURNㄧ個SoundChannel物件[具有stop() 方法、監視聲道振幅 (讀取音量) 的屬性,以及將 SoundTransform 物件(設定音量)設定為聲道的屬性]

13.在CS3中已沒有ReleaseOutSide這個事件了,而我們在CS3使用startDrag()做拖曳效果時還是會遇到ReleaseOutSide的問題,下列程式碼可以解決這個問題,模擬使用ReleaseOutSide這個事件

btn.addEventListener(MouseEvent.MOUSE_DOWN,btn_Down);
function btn_Down(e:MouseEvent):void {
 btn.startDrag(false,new Rectangle(100, 100, 100, 100));
 btn.stage.addEventListener(MouseEvent.MOUSE_UP,btn_Up);
}//把MOUSE_UP這個事件註冊再btn的stage上面是這個技巧的重點
function btn_Up(e:MouseEvent):void {
  btn.stage.removeEventListener(MouseEvent.MOUSE_UP,btn_Up);
  btn.stopDrag();
}

14.AS3的attachMovie
用這個~import flash.utils.getDefinitionByName;
像醬:getDefinitionByName(id.toString());//回傳class,記得NEW起來才可以用

15.Bitmap才可以被addChild因為BitmapData不是繼承DisplayObject,所以從元件褲動態抓過來的JPG(非MC)要再包一層Bitmap
像醬:new Bitmap(new BitmapData(width,height),PixelSnapping.AUTO,true);

16.AS3改顏色
var colorTransform:ColorTransform = square.transform.colorTransform;
colorTransform.color = 0xFF0000;
square.transform.colorTransform = colorTransform;

17.localToGlobal!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//sMenu裡頭包很多myBtn 這段語法將會把myBtn.x轉換成"sMenu的PARENT"上的場景座標
 var clickPoint:Point = new Point(myBtn.x, myBtn.y);
 var targetPoint=sMenu.localToGlobal(clickPoint);


top
TAG sound, XML

Trackback Address :: http://diary.tw/allenliao/trackback/306

  1. allenliao 2007/09/21 12:43 MODIFY/DELETE REPLY

    test

Write a comment


sound物件的stop function 會連flvplayBack的聲音 都關掉

心得筆記 2007/08/21 05:36
sound物件的stop() function 會連flvplayBack的聲音 都關掉!!
若你使用sound物件播放音樂,而你執行stop() function沒有指定你要停止的SOUND ID那這個指令會把所有的音樂都關掉,包括flvplayBack組件的聲音,這個情況甚至會發生在不同SWF檔出現在同ㄧ個瀏覽器,也會互相影響,我的猜測是sound物件的stop() function 他關掉的事flash player裡頭目前所有的聲音,為了避免這種情形,使用sound物件的stop() function 記得指定輸入要停止的SOUND ID


在建立 Sound 物件時,一般都寫成 var mySound:Sound = new Sound();,其實建立一個Sound物件可以寫成 new Sound(ID) ,那個 ID 就是你這個 Sound 物件要來控制的 MovieClip 目標名稱。
top

Trackback Address :: http://diary.tw/allenliao/trackback/276

Write a comment