搜尋部落格文章

2011年12月29日 星期四

TextField 判斷不同字元 套用不一樣的 TextFormat

//正規表達式判斷字串中包含數字
GlobalData.numberRegExp=/\d/g;

override public function set text(value:String):void {
   if (value != null) {
    this.visible = false;
    //super.text = value;
    var numTf:TextFormat;
    var indexArr:Array = [];
    trace("override set text :" + value);
    
    switch (Main.languageType) {
     
     case LanguageType.en_US:
      super.text = value;
      break;
     
     case LanguageType.zh_TW:
      
      if (GlobalData.numberRegExp.test(String(value))&&value.length>0) { //若字串內包含數字(1~more)
       
       numTf = this.getTextFormat(); //copy default format
       numTf.font = GlobalData.font2.fontName;
       indexArr = searchCharCode(value).concat();
       super.text = value;
       for (var j:int = 0; j < indexArr.length; j++) {
        
        this.setTextFormat(numTf, indexArr[j], (indexArr[j] + 1));
       }
       
      }else {
       super.text = value;
      }
      break;
    }
    
   } else {
    trace("value == null");
   }
   this.visible = true;
   return;
  }
  
  //搜尋字元
  private static function searchCharCode(str:String):Array {
   var tempArr = [];
   
   for (var i:int = 0; i < str.length; i++) {
    if (str.charCodeAt(i) >= 46 && str.charCodeAt(i) <= 57) {
     tempArr.push(i);
    }
   }
   return tempArr;
  }

2011年12月20日 星期二

Loader,URLLoader,URLStream 比較

(1)Loader
Loader,用於加載外部的圖片和SWF文件。
如果加載圖片文件(jpg,gif,png等)時,Loader.content得到數據類型是Bitmap對象;
如果加載SWF文件(flash 9版本)時,Loader.content得到數據類型是MovieClip對象;
如果加載SWF文件(flash 9以前版本)時, Loader.content得到數據類型是AVM1Movie對象;

(2)URLLoader
以文本、二進制數據或URL編碼變量的形式從URL下載數據。在下載文本文件、XML或其它用於動態數據驅動應用程序的信息時,它很有用。 URLLoader對象會先從URL中下載所有數據,然後才將數據用於ActionScript。它會發出有關下載進度的通知,通過bytesLoaded和bytesTotal屬性以及已調度的事件,可以監視下載進度。 在加載非常大的視頻文件(如FLV的視頻文件)時,可能會出現內存不足錯誤。

(3)URLStream
提供對下載URL的低級訪問。數據一下載,便可隨即為應用程序使用,這和使用URLLoader時需要等到整個文件下載完不同。並且URLStream類還允許在完成下載前關閉流。已下載文件的內容將作為原始二進制數據提供。在URLStream中的讀取操作是非阻塞模式的。這意味著您在讀取數據之前必須使用bytesAvailable屬性來確定是否能夠獲得足夠的數據。如果不能獲得足夠的數據,將引發EOFError異常。 在默認情況下,所有二進制數據都是以Big-endian格式編碼的,並且最高位字節於第一位。

下面一個實例將被加載的配置文件以二進制數據讀取,這可以解決很多問題,比如對不同格式配置文件進行的處理


package {
 import flash.display.Sprite;
 import flash.events.Event;
 import flash.net.URLRequest;
 import flash.net.URLStream;
 import flash.net.URLLoader;
 import flash.utils.ByteArray;
 import flash.net.URLLoaderDataFormat;
 
 public class Test extends Sprite {
  public function Test(){
   //testURLLoader();   
   testURLStream();
  }
  
  private function testURLLoader():void {
   var urlLoader:URLLoader = new URLLoader();
   urlLoader.dataFormat = URLLoaderDataFormat.BINARY; //原始二进制数据   
   urlLoader.addEventListener(Event.COMPLETE, completeHandler);
   urlLoader.load(new URLRequest("02.xml:"));
  }
  
  private function completeHandler(event:Event):void {
   trace("配置文件是ANSI :" + event.target.data); // 如果配置文件是ANSI等,会出现中文字乱码   
   //URLLoader如果遇到乱码,则可以转换(利用标准的xml格式Excle可以解决乱码问题就是基于这里):   
   var _byteArray:ByteArray = new ByteArray;
   _byteArray.writeBytes(event.target.data);
   _byteArray.position = 0;
   //如果是xml文档   
   var xml:XML = XML(_byteArray.readMultiByte(_byteArray.length, "chinese")); //简体中文 (GB2312)   
   trace(xml);
  }
  
  private function testURLStream():void {
   var stream:URLStream = new URLStream();
   stream.addEventListener(Event.COMPLETE, complete);
   stream.load(new URLRequest("02.xml"));
  }
  
  private function complete(event:Event):void {
   var stream:URLStream = event.target as URLStream;
   var xml:XML = XML(stream.readMultiByte(stream.bytesAvailable, "chinese")); //简体中文 (GB2312)   
   trace(xml);
  }
 }
}

偵測瀏覽器FlashPlayer版本

檢查FlashPlayer版本及是否為debug版

http://flashbuilder.eu/flash-player-version.html
http://www.flashplayerversion.com/

2011年12月19日 星期一

Loader類別的 IO_ERROR 事件中,如何取得url?

因專案需求要對載入物件做加載備用路徑的功能
本來想說用讓Loader.contentLoaderInfo監聽IO_ERROR事件
假設觸發IO_ERROR事件,從事件裡去獲得原始路徑,然後利用string拆解

然後呢!

誰知道
IO_ERROR事件中,居然沒辦法獲取這樣子的屬性
唯一可以取得原始路徑的就在Event.COMPLETE
但在IO_ERROR的錯誤訊息中卻又有原始路徑 囧
這一點實在是很怪異

理論上在初始載入時,應該就會知道載入路徑才是
猜想...可能是Loader內部結構的關係

幾種解決方法

(1) 拆解錯誤訊息
優: 不用自己另寫變數存取
缺: 假設往後錯誤訊息拆解的規則變了,也就失效了
private function ioError(e:IOErrorEvent):void {
  trace(e.text.split(":")[3]);
}
(2) 以url替loader取名字
優: 簡單快速的寫法
缺: 若loader.name另有用途,就不太適用

(3) 寫一個類別繼承Loader
優: 靈活性高
缺: 還沒想到(類別概念要有一定基礎)
複寫Loader.load()

2011年12月14日 星期三

Maxthon 3 update lastest Flash Player

@ 到Adobe官網下載並安裝最新版本的 Adobe Flash Player

一般版: http://get.adobe.com/flashplayer/
Debug版: http://www.adobe.com/support/flashplayer/downloads.html

@ 删除Maxthon3安裝目錄下 \Core\Webkit\Npplugins下的NPSWF32.dll

或者

複製 Windows 7的 C:\WINDOWS\Syswow64\Macromed\FLASH 下的 NPSWF32.dll
或者 Windows XP的 C:\WINDOWS\system32\Macromed\Flash

取代 Maxthon3 安裝目錄下 \ Core \ Webkit的 \ Npplugins 下的 NPSWF32.dll 文件 。

2011年11月28日 星期一

正則表達式 正規表達式

1、正則表達式的概念
正則表達式是用來描述字符串特徵的標準方式。
正則表達式由兩個部分組成:一部分由雙斜杠來標示字符串起始位置,這部分叫匹配模式,用來描述字符串特徵的;另一部分是在第二個斜杠後面的字母,叫做正則表達式的標誌位,是gimsx這五個字母的組合。
例如:var zfc: RegExp=/hello/g;
正則表達式還可以使用正則表達式類的構造函數來生成一個正則表達式實例。
例如:var zfc: RegExp=new RegExp(“hello”,”g”);
可以看出正則表達式的構造函數只不過是將匹配模式和標誌位分開成兩個字符串,當成參數,來生成正則表達式的實例。標誌位是可選參數,如果有為空或者不屬於”gimsx”的字母出現,那麼標誌位參數將被忽略。
使用構造函數生成正則表達式實例,要注意由於匹配模式作為String型,要注意相關的字符轉義,比如單引號和雙引號。


2、正則表達式的引擎機制
AS3使用功能強大的NFA引擎,NFA引擎是一種Greedy的執行方式,一旦找到匹配立刻返回,不管後面是否還有匹配的字符,最先返回最左邊的匹配。


3、正則表達式語法
①正則表達式中的文字符號
由文字符號組成的正則表達式是最簡單的類型,文字符號包括字母、符號和單詞。中文也屬於文字符號,它是用Unicode碼表示的。
文字符號分為3種,即普通文字和符號、元字符和不可見字符。但是,如果使用正則表達式構造函數來匹配正斜杠的話,就不需要轉義了,但不可見字符還是需要轉義的。

②正則表達式中的字符集
字符集是指由中括號裡定義的字符集合。字符集中的字符只要有一個符合特徵描述,那麼就會被認為匹配。字符集只能匹配一個字符。
在字符集中我們可以使用連字符“ - ”來定義一個範圍。3個常用的字符集[AZ]、[az]、[0-9]
取反符號(^)在字符集中的作用是對方括號裡面的字符集取反。即使用了取反符號,只要是不符合字符集描述的字符就符合匹配。
字符集中需要轉義的特殊字符。我們只需對正則表達式字符集元字符中的“ [\^- ”進行轉義。

③特殊的點號(.)
正則表達式中用“.”號來表示任何字符。但“.”號不匹配換行符(\n)。AS3提供一個單行模式標誌符(s)來讓“.”號匹配換行符。

④選擇符(|)
選擇符“|”表示選擇,用來匹配多個可能的正則表達式中的一個。

⑤括號與分組
用圓括號將表達式的一部分括起來,就會將這部分錶達式定義成組。組將被當成一個整體來進行操作。這樣的操作,被稱為分組。
分組一般有如下應用:
● 用來限定選擇符的作用範圍。
● 可以指定括號中的內容重複次數。

⑥用正則表達式描述字符串的重複
顯式限定符是使用花括號{}及其中的數字值表示模式出現次數的上下限的方式。除了顯式限定符,還有非顯式限定符。
如果限定符前面是跟著字符集,那麼就限定符合字符集描述的特徵字符重複次數。
如果限定符前面是跟著組,那麼就限定符合組內表達式描述的特徵字符串重複次數。

⑦正則表達式定位符及其含義
“ ^ ”匹配輸入字符串的開始位置
“ $ ”匹配輸入字符串的結束位置
“ \b ” 匹配一個單詞邊界,也就是指單詞和空格間的位置
“ \B ” 匹配非單詞邊界

⑧正則表達式的5個標誌位
“ g ” global 匹配多個
“ i ” ignoreCase不區分大小寫
“ m ” multiline 設置此標誌後,$和^可以分別匹配行的開頭和結尾
“ s ” dotall 設置此標誌後,“ . ”點號可以匹配換行符(\n)
“ x ” extended 允許擴展的正則表達式

⑨正則表達式中元字符優先級
相同優先級總左到右,不同優先級先高後低。
元字符優先級如下:
\
(), (?:), (?=), []
+, ?.,{n},{n,},{n,m}
^,$,\字符
|

2011年11月12日 星期六

[轉] AS3使用URLRequest和URLLoader與伺服器溝通

AS3 中使用URLLoader 與URLRequest 取代了先前版本LoadVars 方法. 初學者可能又會迷糊了.
在現在幫助系統沒有完善的情況下(Flash 9 沒有幫助, Flex Builder 2 的只有英文), 這裡寫篇簡單的教程, 方便大家往AS3 過渡.

在AS3 中, 有關於網路操作的內置類全部在flash.net 裡. 下面是本教程要用到的類的清單 :

URLLoader : 用於從網路或者本地讀取文件, 可以通過設置他的dataFormat 屬性改變收到的文本類型.
與AS2 的LoadVars 不同的是, 他的默認值URLLoaderDataFormat.TEXT 即純文字格式, 所以在讀取外部文本變量的時候得修改一下他的dataFormat 為URLLoaderDataFormat.VARIABLES. 不過在AS2 中沒有該屬性, 取代的是contentType 屬性.

URLRequest : 用於傳遞變量到伺服器, 以及URLLoader 要load 的目標路徑. 可以通過設置他的contentType 屬性改變發送到伺服器的變量類型, 默認是application/x-form-urlencoding, 也就是URLEncode 編碼.

URLVariables : 用於配置傳遞到伺服器變量的鍵/ 值集合, 如user1=Kakera&user2=Eigo.

URLLoaderDataFormat : 用於設置URLLoader 讀取文件的類型, 有TEXT (純文字), VARIABLES (URLEncoding 的鍵/ 值集合), BINARY (2 進制格式), URLLoader 會根據相應的類型進行解碼操作, 如解碼URLEncode

同時還有其他不常用的 :
URLRequestMethod : 決定使用哪種方式傳遞數據到伺服器, POST 或者GET.
URLReqeustHeader : 用於配置傳遞到服務端的HTTP 標頭.

值得一提的是, URLLoader 還有相當完整的事件讓我們來獲取讀取數據的狀態, 下面是有關URLLoader 事件的清單.

complete : 使用URLLoader.load() 方法後, 數據完全加載完畢時觸發, 通常如果能夠觸發這個事件的話, 說明你的程序沒有問題.

httpStatus : 使用URLLoader.load() 方法後, 獲取HTTP 狀態代碼時觸發, 通過判斷他的state 屬性我們可以獲得遠程文件的加載狀態. 成功(200), 沒有權限(403), 找不到文件( 404), 伺服器內部錯誤(500) 等等. 這個事件總是在compelete 之前被觸發.

ioError : 使用URLLoader.load() 方法時, 發生致命錯誤時觸發, 我還沒碰到過..

open : 使用URLLoader.load() 方法後, 開始從伺服器下載數據時觸發一次, 此時的URLLoader.bytesLoaded 一定是0.

progress : 使用URLLoader.load() 方法後, 在從伺服器下載數據的過程中持續觸發, 通過偵聽他的變化我們可以很方便的為URLLoader 做加載狀態的顯示.

securityError : FlashPlayer 的安全錯誤, 比如跨域加載, 從硬盤(文件系統) 發送/ 讀取伺服器上的數據.

關於註冊偵聽器的建議

flashplayer 內置類的所有事件都有相關事件類常量來表示, 推薦使用他們來註冊事件偵聽器. 而所有的內置類的事件類(Event) 全部在flash.events 包中,如使用:
window.attachEvent("onload",function (){AutoSizeDIV('CODE_7643')}) import flash.events.Event;
urlLoaderInstance.addEventListener(Event.COMPLETE, completeHandler);



來代替
urlLoaderInstance.addEventListener("complete", completeHandler);下面是URLLoader 支持的事件所對應類的清單, 他們可以在Flex Builder 2 的文檔中找到:

complete : Event.COMPLETE
httpStatus : HTTPStatusEvent.HTTP_STATUS
ioError : IOErrorEvent.IO_ERROR
open : Event.OPEN
progress : ProgressEvent.PROGRESS
securityError : SecurityErrorEvent.SECURITY_ERROR

然後下面是使用URLLoader 的一些簡單的例子

1. 單純的讀取伺服器或者硬盤上同目錄下叫Variables.txt 文本文件, 文本的內容是:
user1=Kakera&user2=Eigo&user3=KeiragoLoadVariablesOnly.fla
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLLoaderDataFormat;
import flash.net.URLVariables;
import flash.events.Event;
import flash.events.HTTPStatusEvent;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;


//
// 配置 URLRequest, 設置目標路徑等
//

var request:URLRequest = new URLRequest("Variables.txt");
/
// 配置 URLLoader, 註冊偵聽器等
//

var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, loader_complete);
loader.addEventListener(Event.OPEN, loader_open);
loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, loader_httpStatus);
loader.addEventListener(ProgressEvent.PROGRESS, loader_progress);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, loader_security);
loader.addEventListener(IOErrorEvent.IO_ERROR, loader_ioError);
loader.load(request);

function loader_complete (e:Event):void {
 trace("Event.COMPLETE");
 trace("目標文件的原始數據(純文字) : " + loader.data);
 //
 // 使用URLVariables 處理原始數據並進行遍歷同時輸出數據
 //
 
 var variables:URLVariables = new URLVariables(loader.data);
 for (var i in variables) {
  trace(i + " : " + variables[i]);
 }

}
function loader_open (e:Event):void {
 trace("Event.OPEN");
 trace("讀取了的字節: " + loader.bytesLoaded);
}
function loader_httpStatus (e:HTTPStatusEvent):void {
 trace("HTTPStatusEvent.HTTP_STATUS");
 trace("HTTP 狀態代碼 : " + e.state);
}
function loader_progress (e:ProgressEvent):void {
 trace("ProgressEvent.PROGRESS");
 trace("讀取了的字節: " + loader.bytesLoaded);
 trace("文件總字節 : " + loader.bytesTotal);
}
function loader_security (e:Secu​​rityErrorEvent):void {
 trace("SecurityErrorEvent.SECURITY_ERROR");
}
function loader_ioError (e:IOErrorEvent):void {
 trace("IOErrorEvent.IO_ERROR");
}






2. 提交數據到ServerSide.asp, 並輸出伺服器的返回值

ServerSide.asp <%@LANGUAGE="Jscrīpt" CODEPAGE="65001"%>
<%  //  // 全局 Header, 設置編碼, 以及緩存  //  with (Response) {   Charset = "utf-8";   Buffer = true;   Expires = -10;   ContentType = "text/plain";  }    var buffer = "列出所有服務端接收到的變量: /n";  var i;  var e = new Enumerator(Request.Form);      //  // 遍歷集合  //    for (; !e.atEnd(); e.moveNext()) {   i = e.item();   buffer += String(i) + " : " + String(Request.Form(i)) + "/n";  }    Response.Write(buffer); %>

SendAndLoadVariables.fla

import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLLoaderDataFormat;
import flash.net.URLVariables;
import flash.events.Event;
import flash.events.HTTPStatusEvent;
import flash.events.IOErrorEvent;
import flash.events.ProgressEvent;
import flash.events.SecurityErrorEvent;


//
// 配置URLVariables, 設置傳遞到伺服器的數據
//
 
var variables:URLVariables = new URLVariables();
variables.userName = "Kakera";
variables.password = "********";


//
// 配置URLRequest, 設置目標路徑, 設置提交的數據, 方法(POST / GET)
//

var request:URLRequest = new URLRequest("http://localhost/urlloadersample/ServerSide.asp");
request.data = variables;
request.method = URLRequestMethod.POST;


//
// 配置 URLLoader, 註冊偵聽器等
//

var loader:URLLoader = new URLLoader();


//
// 服務端將要返回的是純文字數據
//

loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.addEventListener(Event.COMPLETE, loader_complete);
loader.addEventListener(Event.OPEN, loader_open);
loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, loader_httpStatus);
loader.addEventListener(ProgressEvent.PROGRESS, loader_progress);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, loader_security);
loader.addEventListener(IOErrorEvent.IO_ERROR, loader_ioError);
loader.load(request);

function loader_complete (e:Event):void {
 trace("Event.COMPLETE");
 trace("目標文件的原始數據(純文字) : /n" + loader.data);
}
function loader_open (e:Event):void {
 trace("Event.OPEN");
 trace("讀取了的字節: " + loader.bytesLoaded);
}
function loader_httpStatus (e:HTTPStatusEvent):void {
 trace("HTTPStatusEvent.HTTP_STATUS");
 trace("HTTP 狀態代碼 : " + e.status);
}
function loader_progress (e:ProgressEvent):void {
 trace("ProgressEvent.PROGRESS");
 trace("讀取了的字節: " + loader.bytesLoaded);
 trace("文件總字節 : " + loader.bytesTotal);
}
function loader_security (e:Secu​​rityErrorEvent):void {
 trace("SecurityErrorEvent.SECURITY_ERROR");
}
function loader_ioError (e:IOErrorEvent):void {
 trace("IOErrorEvent.IO_ERROR");

}

原文連結

使用Loader類別載入外部共享元件庫swf檔

隨著元件增加,以及內嵌字型,導致fla檔體積越來越大
不僅發佈swf耗費很長的時間,過大的檔案也可能影響著伺服器的流量
為了可以更有效率的工作,
首先,先將下述幾樣檔案拉到外部swf中,

製作上使用的檔案類型不外乎就是
1. 圖片
2. 音樂音效
3. 字型

可以的話,最好是一個一個分類
例如:紙娃娃衣物,家具,壁紙,地磚.音樂.字型...
未來若有增加新的物品,就可以單獨增加額外的swf作載入,若有修改某幾樣物品,則修改相對的swf檔案即可


專案初期只對Loader所載入的東西去抓取裡面的Class,

this.loader.contentLoaderInfo.addEventListener(Event.COMPLETE,eventComp);
private function eventComp(e:Event):void{
  (e.currentTarget as LoaderInfo).applicationDomain.getDefinition("className");
}

後來加入preloader後,所有的外部swf在這個時候就要先載入了
載入後使用原本的方法便會抓不到外部元件
解決方法可以在loader.load(request:URLRequest, context:LoaderContext = null);
給loader指定第二個參數context:LoaderContext

var context:LoaderContext = new LoaderContext(); 
context.checkPolicyFile = true; 
var urlReq:URLRequest = new URLRequest("http://www.[your_domain_here].com/photo11.jpg"); 
var ldr:Loader = new Loader(); 
ldr.load(urlReq, context);


LoaderContext 類別包括三個屬性,可以讓您定義如何使用載入內容的環境:

checkPolicyFile:

請只在載入影像檔 (而不是 SWF 檔) 時使用這個屬性。如果將這個屬性設定為 true,Loader 會檢查原則檔的原始伺服器 。只有在內容不是源自包含 Loader 物件的 SWF 檔時,才需要執行這項步驟。如果伺服器授予 Loader 網域權限,Loader 網域中 SWF 檔的 ActionScript 就可以存取已載入影像中的資料;換句話說,您可以使用 BitmapData.draw() 命令,存取載入影像中的資料。

請注意,來自 Loader 物件以外網域的 SWF 檔可以呼叫 Security.allowDomain(),以允許特定網域。

securityDomain:

請只在載入 SWF 檔 (而不是影像) 時使用這個屬性。為不是源自包含 Loader 物件之檔案所屬網域的 SWF 檔指定這個方法。指定這個選項時,Flash Player 會檢查是否有原則檔,如果有,則來自跨網域原則檔中所允許網域的 SWF 檔就可以對載入的 SWF 內容進行跨 Script 處理。您可以將這個參數設定為 flash.system.SecurityDomain.currentDomain。

applicationDomain:

請只在載入以 ActionScript 3.0 撰寫的 SWF 檔 (而非影像或以 ActionScript 1.0 或 2.0
撰寫的 SWF 檔) 時使用此屬性。載入檔案時,您可以透過將 applicationDomain 參數設定為 flash.system.ApplicationDomain.currentDomain,指定檔案要包含在與 Loader 物件相同的應用程式網域中。藉由將載入的 SWF 檔置於相同的應用程式網域中,便可以直接存取其類別。如果您要載入的是包含內嵌媒體 (可以透過它們的相關類別名稱進行存取) 的 SWF 檔,這種做法就很有用。

2011年11月2日 星期三

Flash 音檔匯出原則

在 Flash 文件中匯出聲音時的幾個原則

除了取樣頻率和壓縮方式之外,還有幾種方法可以有效地在文件中使用聲音,並降低檔案大小:

設定淡入點和淡出點,防止無聲區域儲存在 Flash Pro 檔案中,並減少檔案中聲音資料的大小。

若要更有效地利用相同的聲音,請在不同的關鍵影格上套用不同的聲音特效 (例如音量封套、循環和淡入/淡出點)。 您只需要使用一個聲音檔,就能得到好幾種聲音特效。

將簡短的聲音循環,做為背景音樂使用。

不要將串流聲音設為循環。

匯出內嵌在視訊片段中的音效時,請記住音效將使用您在「發佈設定」對話方塊中選取的全域串流設定,進行匯出。

在編輯程式中預覽動畫時,請使用串流同步,讓動畫能和音軌同步播放。 如果您的電腦速度不夠快,無法以和音軌同步的速度繪製出動畫影格,則 Flash Pro 會略過這些影格。

匯出 QuickTime 影片時,您可以盡情使用多種聲音和聲道,而不必擔心檔案大小的問題。 這是因為所有的聲音都會在您匯出為 QuickTime 檔案時,合併為單一的聲音音軌。 因此,您使用的聲音數目對於最終的檔案大小並不會造成影響。

Flash 音檔壓縮設定

如果您在「發佈設定」對話方塊中,為事件聲音或串流聲音選取全域壓縮設定,那麼就算您未在「聲音屬性」對話方塊中為這些聲音選取壓縮設定,這些設定還是會套用到個別的事件聲音或所有的串流聲音。

您也可以在「發佈設定」對話方塊中選取「覆蓋聲音設定」,來覆蓋您在「聲音屬性」對話方塊中指定的匯出設定。 如果您要製作供本機使用的高傳真音效檔案 (較大) 並用於 Web 的低傳真版本 (較小) 時,這個選項就非常有用。

壓縮的取樣頻率和取樣程度會在匯出 SWF 檔中形成明顯的聲音品質及聲音大小之差異。 壓縮聲音的程度愈高和取樣頻率愈低,檔案就會愈小,但品質也因而變得比較差。 您應該自行實驗,找出聲音品質和檔案大小之間的最佳平衡點。


ADPCM 和 Raw 壓縮選項

ADPCM 壓縮會為 8 位元或 16 位元聲音資料設定壓縮。 當您匯出簡短的事件聲音 (例如按一下按鈕) 時,請使用 ADPCM 設定。

Raw 壓縮會將聲音以未壓縮的方式匯出。

預先處理 當您選取「將立體聲轉換為單聲道」時,會將混合的立體聲聲音轉換為單聲道聲音,但是單聲道聲音則不會受此選項影響。

取樣頻率 控制聲音的精確度和檔案大小。 較低的頻率會降低檔案大小,但也會減損聲音品質。

頻率選項如下所示:

5 kHz 僅適用於語音。
11 kHz 為標準 CD 頻率的 1/4,對簡短的音樂片段而言,這是建議的最低品質。
22 kHz 為標準 CD 頻率的 1/2,對於要在網站上播放聲音而言,這是較普遍的選擇。
44 kHz 為標準 CD 音效頻率。
備註: Flash Pro 不能將匯入聲音的 kHz 頻率提高到超出匯入時的頻率。
ADPCM 位元 (僅適用於 ADPCM) 指定壓縮聲音時的位元深度。較高的位元深度可以產生較佳的聲音品質。


mp3 壓縮選項

MP3 壓縮 可讓您以 mp3 壓縮格式來匯出聲音。在匯出較長的串流聲音 (例如音樂音軌) 時,請使用 mp3。 若您即將匯出的檔案當初是以 mp3 格式匯入的,您可以使用和匯入時相同的設定將檔案匯出。

使用匯入的 mp3 品質 預設設定。 您可以取消選取此選項,以選取其他 mp3 壓縮設定。 選取此選項,便能以與匯入 mp3 檔案時的相同設定來匯出此檔案。

位元速率 決定匯出之聲音檔中每一秒的位元。 Flash Pro 支援 8 到 160 Kbps CBR (固定位元速率)。

匯出音樂時,請將位元速率設定為 16 Kbps 或更高,以取得最佳的效果。

預先處理 將混合的立體聲聲音轉換為單聲道聲音 (單聲道聲音則不會受此選項影響)。
備註: 只有在您選取了 20 Kbps 以上的位元比率時,才能使用「預先處理」選項。

品質 決定壓縮速度和聲音品質:

快速 以較快的速度進行壓縮,但聲音品質較低。
中 以較慢的速度進行壓縮,但聲音品質較高。
最佳 以最慢的速度進行壓縮,聲音品質最高。


語音壓縮選項

「語音」壓縮選項會使用適合語音的壓縮方式匯出聲音。備註: Flash Lite 1.0 和 Flash Lite 1.1 不支援使用「語音」壓縮選項。 針對這些播放程式版本所開發的內容,請使用 mp3、ADPCM 或 Raw 壓縮。

取樣頻率 控制聲音的精確度和檔案大小。 較低的頻率會降低檔案大小,但也可能減損聲音品質。
請選取下列其中一個選項:

5 kHz 適用於語音。
11 kHz 建議語音使用。
22 kHz 適用於大部分網站上所播放的音樂類型。
44 kHz 為標準 CD 音效頻率。 然而,因為套用了壓縮,SWF 檔中的聲音就無法達到 CD 品質。

Firefox 64bit

Firefox有64bit版,但只是永遠的alpha1及只有英文版,正式版可從來沒有出現過,
如果要正式版只有下載palemoon x64,雖然只是英文版,但只要安裝中文套件便可,但記著64bit瀏覽器不能使用32bit外掛程式,必須再獨立安裝64bit的外掛程式,但現在只有flash player及java有提供64bit的外掛程式。

Firefox 64bit 主程式 ftp://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central/firefox-10.0a1.en-US.win64-x86_64.installer.exe

正體中文套件 ftp://ftp.mozilla.org/pub/mozilla.org/firefox/nightly/latest-mozilla-central-l10n/win32/xpi/firefox-10.0a1.zh-TW.langpack.xpi

Palemoon 7 x64 http://storage.sity.nl/palemoon/palemoon-7.0.1-x64-installer.exe

palemoon 7 中文套件 http://storage.sity.nl/palemoon/langpacks/7.x/zh-TW.xpi

flash player 64 http://aihdownload.adobe.com/bin/install_flashplayer11x64_mssd_aih.exe

Java 64 http://fs11.filehippo.com/9985/5a3e49a82ffb480c9edda8c6c5f379f2/jre-7u1-windows-x64.exe

2011年10月31日 星期一

各種瀏覽器清除暫存辦法、刪除Flash暫存步驟

Internet Explorer 8
1、點擊工具選單。如果您沒找到該選單,請按鍵盤上的Alt 鍵來顯示選單。
2、選擇刪除瀏覽的歷史記錄。
3、選中 Internet 臨時文件複選框。
4、點擊刪除按鈕。
5、將文件刪除後,點擊確定。
 
Internet Explorer 7
1、點擊工具選單。如果您沒找到該選單,請按鍵盤上的Alt 鍵來顯示選單。
2、選擇刪除瀏覽的歷史記錄。
3、點擊刪除文件按鈕。
4、在確認視窗中點擊是按鈕。
5、點擊關閉按鈕。
 
Internet Explorer 6
1、點擊工具選單。
2、選擇 Internet 選項。
3、點擊常規標籤。
4、點擊刪除文件按鈕。
5、在確認視窗中點擊確定按鈕。
6、點擊確定按鈕關閉"Internet 選項"視窗。
 
360安全瀏覽器
1、點擊 工具 選單。
2、選擇 清除瀏覽記錄。
3、勾選“瀏覽器暫存的臨時文件”
4、點擊立即清理按鈕。
 
 
傳說中的Firefox(火狐)---要清空Mozilla Firefox 的暫存,請按以下步驟操作:
1、單擊瀏覽器頂部的"Tools"(工具)選單,並選擇"Options"(選項)。
2、單擊"Privacy"(隱私)。
3、單擊"Cache"(高速暫存)旁邊的"Clear"(清空暫存)。
4、單擊"OK"(確定)。
 
Mozilla(火狐) 和Netscape(網景) ---要清空Mozilla 和Netscape 的暫存,請按以下步驟操作:
1、單擊瀏覽器頂部的"Edit"(編輯)選單,然後選擇"Preferences"(首選項)。
2、單擊"Advanced"(高級)旁邊的"+"。
3、單擊"Advanced"(高級)下面的"Cache"(高速暫存)。
4、單擊"Clear Cache"(清除高速暫存)。
5、單擊"OK"(確定)。
 
Safari(蘋果)---要清空Safari 的暫存,請按以下步驟操作:
1、打開瀏覽器工具欄中的"Safari"選單。
2、選擇"Empty Cache"(清空暫存)。
3、單擊該對話框中的"Empty"(清空)。
 
谷歌瀏覽器chrome---要清空chrome的暫存,請按以下步驟操作:
1、點擊小扳手圖標
2、選擇“選項”
3、選擇“個人資料”
4、在瀏覽數據中,點擊“清除瀏覽數據”
5、彈出小視窗點擊“清除瀏覽數據”
 
Opera(歐普拉)---要清空Opera 的暫存,請按以下步驟操作:
1、在 Opera 中,點擊工具選單。
2、點擊偏好設置。
3、選擇高級標籤。
4、點擊左側欄中的歷史記錄。
5、在"磁盤暫存"部分,點擊立即清空。
6、點擊確定以關閉"偏好設置"。

2011年4月20日 星期三

FlashDevelop Snippet 場景設定值一次搞定

Tool>Code Snippets>Add> ... >Save

Snippet name: stageSetting

code:

this.stage.quality = $$(quality=StageQuality.BEST,StageQuality.HIGH,StageQuality.MEDIUM,StageQuality.LOW);
this.stage.scaleMode = $$(scaleMode=StageScaleMode.NO_SCALE,StageScaleMode.SHOW_ALL,StageScaleMode.NO_BORDER,StageScaleMode.EXACT_FIT);
this.stage.align = StageAlign.TOP_LEFT;
this.stage.frameRate = $$(frameRate=25,60,30,20,12);

2011年3月11日 星期五

FlashDevelop macro 搜尋滑鼠指定文字

搜尋Adobe官方 FlashPlayer 10.0 Help文件
RunProcess|http://help.adobe.com/zh_TW/AS3LCR/Flash_10.0/search.html?search=$(CurWord)

搜尋GoogleCode
RunProcess|http://www.google.com.tw/codesearch?as_q=$(CurWord)&hl=tw&as_lang=actionscript

搜尋本機Flash CS5 Help文件(Windows7適用)
RunProcess|file:///C:/Documents%20and%20Settings/Administrator/Application%20Data/chc.4875E02D9FB21EE389F73B8D1702B320485DF8CE.1/Local%20Store/Help/zh_TW/Flash/CS5/AS3LR/search.html#$(CurWord)

搜尋本機Flash CS5 Help文件(WindowsXP適用)
RunProcess|file:///C:/Documents%20and%20Settings/USER/Application%20Data/chc.4875E02D9FB21EE389F73B8D1702B320485DF8CE.1/Local%20Store/Help/zh_TW/Flash/CS5/AS3LR/search.html#$(CurWord)

搜尋日本Wonderfl
RunProcess|http://wonderfl.net/search?q=$(CurWord)

2011年2月18日 星期五

FlashDevelop 無法匯入 Flash組件套件類別

安裝完新版FlashDevelop 3.3.4,
自己在練習時需要用到Flash CS5中的組件按鈕(Button)
結果在fla所綁的文件類別中要匯入組件類別(import fl.controls.Button;)
卻怎樣的找不到XD

解決方法如下

1. 首先開啟FlashDevelop
設定 Tools>Gobal classpath>AS3>Add Classpath






2. 選擇路徑下的mx資料夾
C:\Program Files\Adobe\Adobe Flash CS5\Common\First Run\Classes\mx






完成!