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的trace 走訪OBJECT

ActionScript3.0 2009/11/30 08:09
1.用這個
http://blog.bodurov.com/ActionScript-3-Object-Tracer-for-Flash-and-Flex

2.用mx.utils.ObjectUtil.toString

3.用flash.utils.describeType

以上~~~~~~
top
TAG tracer

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

Write a comment


AS3的音量控制

ActionScript3.0 2009/10/04 13:44
someSpriteOrMovieClass.soundTransform = new SoundTransform(0);
這一行可以控制someSpriteOrMovieClass理頭的音量,不會搞到全域影響

下面這一段才是全域音量的控制方法
var tmpSndTrans:SoundTransform=SoundMixer.soundTransform;
   tmpSndTrans.volume=0;
   SoundMixer.soundTransform=tmpSndTrans;
top

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

  1. Rex 2009/12/27 11:26 MODIFY/DELETE REPLY

    阿倫前輩 可否請教一下

    如果我在場景裡有三個做成元件的音樂

    我要讓他們在一開始就播放

    但是要三首歌的音量都為0

    這能做得到嗎? 該如何寫語法呢?

    懇請賜教了qq 感謝大大

    • allenliao 2010/01/28 02:24 MODIFY/DELETE

      你的元件.soundTransform = new SoundTransform(你要設的音量0[無聲]~1[最大聲]);

Write a comment


flexformatter

Flex 2009/09/19 17:41
安裝方式
(1) 下載.jar 檔 : http://sourceforge.net/projects/flexformatter/
(2) 丟到Flex Builder 的plugin資料夾 (or "dropins" dir if you are using Eclipse 3.4 or greater)
(3) 重新啟動Flex Builder (如果沒有出現,就在開啟FLEX桌面捷徑的>右鍵>內容>目標>最後面加上-clean)  EX:"FLEX安裝路徑 / FlexBuilder.exe" -clean
(4) 安裝完畢,工具列上就會出現兩個新的formatter按鈕了

「Format Flex Code」可依全部格式(ex: 字的間隔、if格式等等)重新format,「Indent Flex Code」只改變行的位置,而不更動其他的格式。
top

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

Write a comment


FMS SWF verification--- Application.xml的設定

心得筆記 2009/08/26 04:06
   <Application>
   <SWFVerification enabled="true">
     <SWFFolder>C://Program Files/Adobe/Flash Media Server 3.5/applications/ba/SWFs</SWFFolder>
     <MinGoodVersion />
      <UserAgentExceptions>
         <Exception to="" from="" />
   </UserAgentExceptions>
      <Cache>
        <TTL />
        <UpdateInterval />
   </Cache>
</SWFVerification>
</Application>

你要認證的SWF就放在這裡>>C://Program Files/Adobe/Flash Media Server 3.5/applications/ba/SWFs

他是以編譯時間為主的,同一個FLA你重新編譯ㄧ次,產出的SWF就變的不合法
top
TAG FMS

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

Write a comment


Flex (or Flash) Event Bubble

Flex 2009/08/20 09:58

flex load 了一個 swf
swf 發了一個event (Event.dispatchEvent), flex 和 swf自己都有註冊監聽(addEventListener)這個event

Bubble flow 為:
1.swf
2.flex

若把Event Bubble 的屬性設為false(捕獲階段), flex 就聽不到了
Bubble flow 為:
1.swf



所以我們可以了解到若由flex發出event swf是怎麼也聽不到的

top

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

Write a comment


Flex Metadata Event 使用範例

Flex 2009/07/02 09:51

1.先自定一個EVENT CLASS
package com.C_event{                   //放在SRC/com/C_event的資料夾下
 import flash.events.Event;

 public class WindowsEvent extends Event//繼承EVENT
 {
  public static const WINDOW_RESTORE_START:String="onWindowRestoreStart";//弄個常數
  public function WindowsEvent(type:String)
  {
   super(type);//把東西丟回EVENT
  }
 }
}

2.新增一個MXML(取名為CWindow)也放在SRC/com/C_event的資料夾下(注意![Event(name="onWindowRestoreStart",type="com.C_event.WindowsEvent")]裡的onWindowRestoreStart這個字串要和WindowsEvent 裡的WINDOW_RESTORE_START常數值一樣)

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml"
 width="400" height="400" minWidth="200" minHeight="200">
 <mx:Metadata>
  [Event(name="onWindowRestoreStart",type="com.C_event.WindowsEvent")]
 </mx:Metadata>
 <mx:Script>
  <![CDATA[
  private function dpWevent(e:MouseEvent):void{//若點擊視窗中的按鈕就視為觸發WINDOW_RESTORE_START這個EVENT
   var W_event:WindowsEvent=new WindowsEvent(WindowsEvent.WINDOW_RESTORE_START);
   this.dispatchEvent(W_event);

  }
   
  ]]>
 </mx:Script>
 <mx:Button x="121" y="103" label="Button" width="155" click="dpWevent(event)"/>
 
</mx:Canvas>

3.在產生一個MXML(主程式)放在 src的資叫夾中去引用CWindow這個TAG

<?xml version="1.0"?>
<!-- charts/CSSFillsArrayExample.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:Comp="com.C_event.*">
  <mx:Script>
   <![CDATA[
   import com.C_event.WindowsEvent;
    private function onEvent(e:WindowsEvent):void{
     trace(e.currentTarget)
    }
   ]]>
  </mx:Script>
  <Comp:CWindow onWindowRestoreStart="onEvent(event)">
   
  </Comp:CWindow>
</mx:Application>

top

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

Write a comment


使用FLEX 第三方特效--DrillDownEffect

Flex 2009/06/26 08:51
1.下載套件範例
http://www.quietlyscheming.com/blog/2006/10/02/flex-charting-sample-animated-drilldown/

2.把qs的資料夾CO出來貼到你的專案的SRC資料夾中

3.插進這2行TAG

<effects:DrillDownEffect id="effD" duration="1500"  effectEnd="chart.mouseChildren = true;" />
 <effects:DrillUpEffect id="effU" duration="1500" effectEnd="chart.mouseChildren = true;" />

4.貼上4個FUNCTION
public function genDataFrom(node:XML):XMLList//依次產生一層
   {
    var count:Number = Math.round(Math.random()*2 +2);//產生的筆數
    var aCharCode:Number = ("A").charCodeAt(0);//每個子層級都從A開始命名
    var children:XMLList = rootNode.children();
    trace("children.length()"+children.length())
    if(children.length() == 0)
    {
     var rootLabel:String = node.@label;
     for(var i:int = 0;i < count;i++)
     {
      rootNode.appendChild( <node label={rootLabel + "." +  String.fromCharCode(aCharCode+i)}
       name={rootLabel + "." + String.fromCharCode(aCharCode+i)} Country={Math.random()*100} normal={Math.random()*100} errorD={Math.random()*100} value={Math.random()*100} /> );
     }
    }
    return node.children();
   }
   public function drillDown(e:ChartItemEvent):void//跳到下一層
   {
    chart.mouseChildren = false;
    effD.drillFromIndex = e.hitData.chartItem.index;
   
    series.setStyle("showDataEffect",effD);  
    series2.setStyle("showDataEffect",effD);
    rootNode = XML(e.hitData.chartItem.item);//CHRT ITEM的資料
   
    chart.dataProvider = genDataFrom(rootNode);    
    //crumbs.leaf = rootNode;
   }
   public function drillUp():void//跳到上一層
   {
    if (rootNode.parent() == null)
     return;
     
    drillUpTo(rootNode.parent());
   }
   public function drillUpTo(node:XML):void//往上跳到某一層
   {
    if(rootNode == node)
     return;
     
    while(rootNode.parent() != node)
     rootNode = rootNode.parent();
     
    chart.mouseChildren = false;
    series.setStyle("showDataEffect",effU);
    series2.setStyle("showDataEffect",effD);
    effU.drillToIndex = rootNode.childIndex();  
    rootNode = rootNode.parent();
    chart.dataProvider = genDataFrom(rootNode);    
    //crumbs.leaf = rootNode;
   }

5.貼上import mx.charts.chartClasses.Series;
   import mx.charts.chartClasses.ChartBase;
   import mx.charts.events.ChartItemEvent;
   import mx.charts.ChartItem;
   private var min:Number = 0;
   private var max:Number = 100;
   private var chart:ChartBase;
   private var series:Series;
   private var series2:Series;
   private var rootNode:XML = <root value='' name="root" />;

6.把series chart改成你要的rootNode設計成你要的就可以用了!
top
TAG Flex

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

Write a comment


FLEX CONSOLE Encoding

Flex 2009/06/25 05:50
在FLEX TRACE中文時,印再CONCOLE的中文字變成問號...

要正常顯示中文設定的畫面如下
用戶插入圖片
top
TAG Flex

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

Write a comment


PREV : [1] : [2] : [3] : [4] : [5] : ... [8] : NEXT