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


crossdomain.xml 沒有被自動載入

ActionScript3.0 2010/02/01 08:50
在LOAD的時候加一下new LoaderContext(true),因為預設值是FALSE,妳要設成TRUE crossdomain.xml 才會被載入

var myLoader=new Loader();
 var requestor : URLRequest = new URLRequest(picPath);
 myLoader.contentLoaderInfo.addEventListener (Event.COMPLETE, imageLoaderCompleteHandler);
 myLoader.load(requestor,new LoaderContext(true))
top

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

Write a comment


AS3 load AS2 Aand edit(crossScripting?)

ActionScript3.0 2007/10/04 02:45

首先在domain1.com放置一個由AS3編寫的main.swf
再第一影格程式碼如下

var loader3:Loader=new Loader();//載AS2 SWF
var URLrequest3:URLRequest=new URLRequest("
http://domain2.com/AS2movie.swf");
loader3.contentLoaderInfo.addEventListener(Event.COMPLETE,gotit);
//loader2.load(URLrequest2, new LoaderContext(true,null,null))
loader3.load(URLrequest3);
loader3.y=200;
this.addChild(loader3);
function gotit(e:Event) {
 trace("AD TYPE:"+e.target.contentType);
 trace("e.target:"+e.target.content)
 var w:Number=100;
 var h:Number=100;
 e.target.content.width=w;
 e.target.content.height=h;
 /*
 if (e.target.contentType=="application/x-shockwave-flash" ) {
  var ADP_obj:Object=new Object();
  ADP_obj.w=w;
  ADP_obj.h=h;
  conn.send("setAD_conn", "setADProperty_fun", ADP_obj);
 } else {
  e.target.content.width=w;
  e.target.content.height=h;
  loader.visible=true;
 }*/
}


在domain2.com放置一個由AS2編寫的AS2movie.swf再第一影格程式碼如下

System.security.allowDomain("*");
/*
var conn:LocalConnection = new LocalConnection();
conn.allowDomain = function(sendingDomain:String) {
 trace("sendingDomain:"+sendingDomain)
    return true;
};
conn.Stageobj=this
conn.setADProperty_fun = function(ADP_obj:Object) {
 trace("someone call me!!!")
    this.Stageobj._width=ADP_obj.w
 this.Stageobj._height=ADP_obj.h
};
conn.connect("setAD_conn");
*/

結果我收到下列的錯誤訊息
SecurityError: Error #2121: Sandbox 安全性違規:LoaderInfo.content:http://domain1.com/main.swf 無法存取 http://domain2.com/AS2movie.swf。這問題可以藉呼叫 Security.allowDomain 解決。
 at flash.display::LoaderInfo/get content()
 at loadpic_fla::MainTimeline/gotit()





 

top

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

Write a comment