<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5631781275095132276</id><updated>2011-12-20T15:29:57.398+08:00</updated><category term='軟體設定'/><category term='C#'/><category term='串流影音'/><category term='PHP'/><category term='jQuery'/><category term='frameworks'/><category term='SQL'/><category term='CSS與Html'/><category term='DB'/><category term='ActionScript'/><category term='FlashRemoting'/><category term='Flex'/><category term='XML'/><category term='設計模式'/><category term='工具'/><category term='通用'/><category term='JavaScript'/><category term='Android'/><category term='PureMVC'/><category term='ASP.NET'/><title type='text'>Ed's Commonplace 學習筆記</title><subtitle type='html'>Ed 將一些學習時的整理與備忘記錄在此, 以備需要時隨時查詢</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default?start-index=101&amp;max-results=100'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>117</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-654020786401291156</id><published>2011-12-20T14:58:00.004+08:00</published><updated>2011-12-20T15:29:57.413+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android 筆記-讓 WebView 裡的 javascript 呼叫 java</title><content type='html'>這幾天碰到了一個問題&lt;br /&gt;在 WebView 裡面有撥電話的連結&lt;br /&gt;使用類似下面這樣的 html 碼&lt;br /&gt;&lt;pre class="brush:xml"&gt;&amp;lt;a href="tel:0288888888"&amp;gt;0288888888&amp;lt;/a&amp;gt;&lt;/pre&gt;&lt;br /&gt;點下連結時 Android 會叫出撥號介面並且自動將號碼填進去&lt;br /&gt;使用者只要按下撥號鍵就可以撥出&lt;br /&gt;&lt;br /&gt;不過要是電話號碼有分機資訊時&lt;br /&gt;我們需要的電話號碼可能是 0288888888,123 這樣的格式(","代表暫停兩秒)&lt;br /&gt;使用上述方法叫出撥號介面的話&lt;br /&gt;Android 會把","及其後面的號碼都給去掉&lt;br /&gt;&lt;br /&gt;為此我做了一些測試&lt;br /&gt;發現如果是透過 Intent.ACTION_DIAL 叫出撥號介面會出現一樣情形&lt;br /&gt;但是 Intent.ACTION_CALL 直接撥號可以正常撥出分機&lt;br /&gt;&lt;br /&gt;所以只要我讓 WebView 呼叫 java&lt;br /&gt;透過 Intent.ACTION_CALL 直接撥號&lt;br /&gt;就可以解決分機的問題了&lt;br /&gt;&lt;br /&gt;那要怎麼做呢?&lt;br /&gt;就是用 addJavascriptInterface 這個方法&lt;br /&gt;&lt;br /&gt;把要做的事情寫在一個對應 Object 的 method 裡面&lt;br /&gt;&lt;pre class="brush:java"&gt;&lt;br /&gt;MyObj myObj = new MyObj();&lt;br /&gt;&lt;br /&gt;public class MyObj{&lt;br /&gt; public void telext(String telStr) {&lt;br /&gt;  Uri uri = Uri.parse("tel:"+telStr);&lt;br /&gt;  Intent intent = new Intent(Intent.ACTION_CALL, uri);  &lt;br /&gt;  startActivity(intent); &lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;在 WebView 載入資料前要指定對應的 Obj&lt;br /&gt;&lt;pre class="brush:java"&gt;//打開 JavaScriptEnabled 並加入對應物件&lt;br /&gt;myWebView.getSettings().setJavaScriptEnabled(true);&lt;br /&gt;myWebView.addJavascriptInterface(myObj, "myObj");&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;addJavascriptInterface 需要傳入兩個參數&lt;br /&gt;第一個是 Object 物件，第二個是 javascript 呼叫時的名稱&lt;br /&gt;&lt;br /&gt;載入的 html 就可以用類似這樣的方式呼叫 java&lt;br /&gt;&lt;pre class="brush:xml"&gt;&amp;lt;a href="#" onClick="window.myObj.telext('"+sContactTel+"');\"&amp;gt;sContactTel&amp;lt;/a&amp;gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-654020786401291156?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/654020786401291156/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=654020786401291156' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/654020786401291156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/654020786401291156'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2011/12/android-webview-javascript-java.html' title='Android 筆記-讓 WebView 裡的 javascript 呼叫 java'/><author><name>Edward</name><uri>http://www.blogger.com/profile/07491106373121640838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_s9bigH9PhSQ/Sbs5syG8__I/AAAAAAAAA6c/ROS18zo-FIQ/S220/DSC00094.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-2653566595831370066</id><published>2011-12-20T14:43:00.004+08:00</published><updated>2011-12-20T14:57:07.501+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android 筆記-WebView 無法正確顯示 UTF-8 編碼內容的解決辦法</title><content type='html'>公司的測試手機 Nexus S 升級 Ice Cream Sandwich (4.0.3) 之後&lt;br /&gt;發現了一個小問題&lt;br /&gt;就是原本 app 裡面的 WebView 裡面的中文字變成了亂碼&lt;br /&gt;而在 2.3.6 的版本則是正常顯示&lt;br /&gt;&lt;br /&gt;但是明明 html 碼裡面已經指定了&lt;br /&gt;&lt;pre class="brush:xml"&gt;&amp;lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8"&amp;gt;&lt;/pre&gt;&lt;br /&gt;WebView 載入資料時也指定為 UTF-8 了&lt;br /&gt;&lt;pre class="brush:java"&gt;myWebView.loadData(sHtml, "text/html", "utf-8");&lt;/pre&gt;&lt;br /&gt;為什麼還是會有亂碼呢?&lt;br /&gt;&lt;br /&gt;上網搜尋後發現有一個解法&lt;br /&gt;就是改用 loadDataWithBaseURL 這個 method&lt;br /&gt;&lt;pre class="brush:java"&gt;myWebView.loadDataWithBaseURL(null, sHtml, "text/html", "utf-8", null);&lt;/pre&gt;&lt;br /&gt;其原理是利用這個方法強迫 WebView 去把 html 的內容給 base encode&lt;br /&gt;資料來源是&lt;a href="http://www.kospol.gr/247/webview-not-displaying-utf-8-data/"&gt;這裡&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-2653566595831370066?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/2653566595831370066/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=2653566595831370066' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2653566595831370066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2653566595831370066'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2011/12/android-webview-utf-8.html' title='Android 筆記-WebView 無法正確顯示 UTF-8 編碼內容的解決辦法'/><author><name>Edward</name><uri>http://www.blogger.com/profile/07491106373121640838</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://1.bp.blogspot.com/_s9bigH9PhSQ/Sbs5syG8__I/AAAAAAAAA6c/ROS18zo-FIQ/S220/DSC00094.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-7746398216395368460</id><published>2011-02-10T14:22:00.006+08:00</published><updated>2011-02-15T15:40:35.450+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='frameworks'/><category scheme='http://www.blogger.com/atom/ns#' term='PureMVC'/><title type='text'>PureMVC 入門筆記-2</title><content type='html'>接著來看看 Notification&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #444444; color: #cccccc;"&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;Notification&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Package：org.puremvc.as3.patterns.observer&lt;br /&gt;實作 INotification，與 Flash 的 Event 機制不同的是&lt;br /&gt;Event 機制遵循的是 責任鍊(Chain of Responsibility) 模式，事件會跟著 displayObject 的 parent 一直上浮&lt;br /&gt;而 Notification 則是遵照&lt;a href="http://zh.wikipedia.org/zh-tw/%E7%99%BC%E5%B8%83/%E8%A8%82%E9%96%B1"&gt;發布/訂閱模式&lt;/a&gt;，訂閱者只接收感興趣的消息，與接收者之間並無 parent/child 關係&lt;br /&gt;而 Notification 並不是用來取代 Event 機制的，它們需要相互合作使用&lt;br /&gt;&lt;br /&gt;主要 public 方法有：&lt;br /&gt;//建構子&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;Notification(name:String, body:Object = null, type:String = null)&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;getBody():Object&lt;br /&gt;getName():String&lt;br /&gt;getType():String&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;setBody(body:Object):void&lt;br /&gt;setType(type:String):void&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;toString():String&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;由於 Proxy, Mediator, Command 都繼承自 Notifier 並實作 INotifier&lt;br /&gt;所以有一些共通的屬性方法&lt;br /&gt;&lt;div style="background-color: #444444; color: #cccccc;"&gt;//連到 Facade 實體的參照&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;facade : IFacade&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;initializeNotifier(key:String):void&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;sendNotification(notificationName:String, body:Object = null, type:String = null):void&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;這些就不一一列在下面了&lt;br /&gt;而要注意的是 Mediator/View 之間的關係不可避免的是緊耦合，Proxy/Data 也是一樣。但這樣可以讓他們與其他程式碼變成松耦合&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #444444; color: #cccccc;"&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;Proxy&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Package：org.puremvc.as3.patterns.proxy&lt;br /&gt;繼承 Notifier，實作 INotifier, IProxy&lt;br /&gt;Proxy 的角色是被 Model 註冊的數據持有者，並用來實現 Domain Logic，其中 data 可以透過 getter 轉型為它真正的型別&lt;br /&gt;&lt;br /&gt;Protected 屬性：&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;data : Object&lt;br /&gt;proxyName : String&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;主要 public 方法有：&lt;br /&gt;//建構子&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;Proxy(proxyName:String = null, data:Object = null)&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;setData(data:Object):void&lt;br /&gt;getData():Object&lt;br /&gt;getProxyName():String&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="background-color: #444444; color: #cccccc;"&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;Mediator&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Package：org.puremvc.as3.patterns.mediator&lt;br /&gt;繼承 Notifier，實作 INotifier, IMediator&lt;br /&gt;Mediator 的工作是負責讓 view component 與系統其他部分進行溝通，其中 viewComponent 可以透過 getter 轉型為它真正的型別&lt;br /&gt;&lt;br /&gt;Protected 屬性：&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;mediatorName : String&lt;/b&gt;&lt;/div&gt;//用來存放視覺組件的變數&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;viewComponent : Object&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;主要 public 方法有：&lt;br /&gt;//建構子&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;Mediator(mediatorName:String = null, viewComponent:Object = null)&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;//在這邊列出要 Mediator 感興趣的 INotification 的名稱，這裡有列的，handleNotification()才會收到&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;listNotificationInterests():Array&lt;/b&gt;&lt;/div&gt;//Mediator需要監聽 Flash 裡的 Event (來自 view Component)，也要監聽 Notification，其差別就在於使用 listNotificationInterests() 跟 handleNotification() 這兩個方法來管理 Notification&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;handleNotification(notification:INotification):void&lt;/b&gt;&lt;/div&gt;&lt;pre class="brush: as3"&gt;//handleNotification 範例 CODE&lt;br /&gt;override public function handleNotification(notification:INotification):void{&lt;br /&gt; //建議使用 switch/case 來處理 Notification&lt;br /&gt; switch(notification.getName()){&lt;br /&gt;  //這裡處理的 Notification 如果太多(超過四五個)，應把 Mediator 拆開&lt;br /&gt;  case LoginProxy.LOGIN_FAILED:&lt;br /&gt;   //..省略...&lt;br /&gt;   break;&lt;br /&gt;  case LoginProxy.LOGIN_SUCCESS:&lt;br /&gt;   //..省略...&lt;br /&gt;   break;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;//viewComponent 的取得與設定&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;setViewComponent(viewComponent:Object):void &lt;br /&gt;getViewComponent():Object&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;getMediatorName():String&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;至於 Command，則分成 SimpleCommand 跟 MacroCommand 兩種&lt;br /&gt;差別在於 MacroCommand 可以執行其他 ICommand&lt;br /&gt;Command 的功能在於協調 Proxy、處理異常等等&lt;br /&gt;&lt;br /&gt;&lt;div style="background-color: #444444; color: #cccccc;"&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;SimpleCommand &lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Package org.puremvc.as3.patterns.command&lt;br /&gt;繼承 Notifier，實作 INotifier, ICommand&lt;br /&gt;&lt;br /&gt;繼承自 Notifier 的屬性與方法&lt;br /&gt;//連到 Facade 實體的參照&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;facade : IFacade&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;sendNotification(notificationName:String, body:Object = null, type:String = null):void&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;自己的方法只有一個，就是&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;execute(notification:INotification):void&lt;/b&gt;&lt;/div&gt;這個方法是給我們 override 用的，可以把要處理的事情寫進去&lt;/div&gt;&lt;br /&gt;&lt;div style="background-color: #444444; color: #cccccc;"&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;MacroCommand&lt;/b&gt;&lt;/div&gt;Package org.puremvc.as3.patterns.command&lt;br /&gt;繼承 Notifier，實作 INotifier, ICommand&lt;br /&gt;&lt;br /&gt;除了跟 SimpleCommand 一樣擁有&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;facade : IFacade&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;execute(notification:INotification):void&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;sendNotification(notificationName:String, body:Object = null, type:String = null):void&lt;/b&gt;&lt;/div&gt;之外&lt;br /&gt;&lt;br /&gt;還有以下方法：&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;initializeMacroCommand():void&lt;br /&gt;addSubCommand(commandClassRef:Class):void&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;addSubCommand(commandClassRef:Class) 可以為 Command 增加 SubCommand&lt;br /&gt;( SubCommand 本身可以是 SimpleCommand 也可以是 MacroCommand)&lt;br /&gt;在 execute() 時會遵循 First In/First Out (FIFO) 的順序&lt;br /&gt;&lt;br /&gt;要注意的是 execute() 在這裡已經變成一個 final function&lt;br /&gt;所以要改為 override 它的 initializeMacroCommand() 方法&lt;br /&gt;initializeMacroCommand()的 override 應該要像這樣：&lt;br /&gt;&lt;pre class="brush: as3"&gt;override protected function initializeMacroCommand():void{&lt;br /&gt; addSubCommand(me.myapp.controller.FirstCommand);&lt;br /&gt; addSubCommand(me.myapp.controller.SecondCommand);&lt;br /&gt; addSubCommand(me.myapp.controller.ThirdCommand);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;以上，已經把這四個重要的類別掃過一遍了&lt;br /&gt;再搭配高手們的範例來看應該就會對 PureMVC 有一些認識&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-7746398216395368460?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/7746398216395368460/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=7746398216395368460' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7746398216395368460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7746398216395368460'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2011/02/puremvc-2.html' title='PureMVC 入門筆記-2'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-1824449648349740154</id><published>2011-02-10T11:15:00.013+08:00</published><updated>2011-02-15T11:05:36.944+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='frameworks'/><category scheme='http://www.blogger.com/atom/ns#' term='PureMVC'/><title type='text'>PureMVC 入門筆記-1</title><content type='html'>雖然已經有很多先進寫過關於 PureMVC 的相關文章&lt;br /&gt;但是我還是習慣自己整理一下筆記來釐清觀念&lt;br /&gt;&lt;br /&gt;PureMVC 的目的就是實踐 &lt;a href="http://zh.wikipedia.org/zh-tw/MVC"&gt;MVC&lt;/a&gt; 設計模式，把程式分成Model、View、Controller 三個部份，當然裡面還實作了 GoF &lt;a href="http://zh.wikipedia.org/zh-tw/%E8%A8%AD%E8%A8%88%E6%A8%A1%E5%BC%8F_%28%E6%9B%B8%29"&gt;設計模式：可復用物件導向軟體的基礎&lt;/a&gt;裡面的其他設計模式(&lt;a href="http://zh.wikipedia.org/zh-tw/%E4%BB%A3%E7%90%86%E6%A8%A1%E5%BC%8F"&gt;代理模式&lt;/a&gt;, &lt;a href="http://zh.wikipedia.org/zh-tw/%E5%91%BD%E4%BB%A4%E6%A8%A1%E5%BC%8F"&gt;命令模式&lt;/a&gt;, 觀察者模式, &lt;a href="http://zh.wikipedia.org/zh-tw/%E5%A4%96%E8%A7%80%E6%A8%A1%E5%BC%8F"&gt;外觀模式&lt;/a&gt;, &lt;a href="http://zh.wikipedia.org/zh-tw/%E5%96%AE%E4%BE%8B%E6%A8%A1%E5%BC%8F"&gt;單例模式&lt;/a&gt;, &lt;a href="http://zh.wikipedia.org/zh-tw/%E5%B7%A5%E5%BB%A0%E6%96%B9%E6%B3%95"&gt;工廠方法模式&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Mediator_pattern"&gt;中介者模式&lt;/a&gt;...等)&lt;br /&gt;&lt;br /&gt;Model (負責轉發請求，對請求進行處理) --&amp;gt; Proxy&lt;br /&gt;View (使用者介面) --&amp;gt; Mediator&lt;br /&gt;Controller(資料管理或實作演算法) --&amp;gt; Command&lt;br /&gt;Facade (實做外觀模式，使用單一類別作為MVC三者溝通之用)&lt;br /&gt;&lt;br /&gt;而溝通則使用 Notification (實做觀查者模式)，不使用 Flash 的 Event 機制，以便移植到其他語言&lt;br /&gt;Notification 可以被用來觸發 Command 的執行&lt;br /&gt;Facade, Proxy, Mediator, Command 大家都可以 sendNotification&lt;br /&gt;而 Facade 跟 Proxy 不會接收 Notification&lt;br /&gt;&lt;br /&gt;以下針對個別部份進行詳細說明：( Standard 版本)&lt;br /&gt;&lt;div style="background-color: #444444; color: #cccccc;"&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;Facade&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Package：org.puremvc.as3.patterns.facade&lt;br /&gt;是 IFacade 的單例實作&lt;br /&gt;Facade 的功能有：&lt;br /&gt;初始化 Model, View, Controller 的單例類別並提供所有方法&lt;br /&gt;對主程式註冊 Command 的地方&lt;br /&gt;&lt;br /&gt;主要 public 方法有： &lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;getInstance():IFacade&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;//建立並發送 INotification.&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;sendNotification(notificationName:String, body:Object = null, type:String = null):void&lt;/b&gt;&lt;/div&gt;//取得 Mediator&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;retrieveMediator(mediatorName:String):IMediator&lt;/b&gt;&lt;/div&gt;//取得 Proxy&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;retrieveProxy(proxyName:String):IProxy&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;//註冊 Command, Mediator, Proxy&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;registerCommand(notificationName:String, commandClassRef:Class):void&lt;br /&gt;registerMediator(mediator:IMediator):void&lt;br /&gt;registerProxy(proxy:IProxy):void&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;//移除 Command, Mediator, Proxy&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;removeCommand(notificationName:String):void&lt;br /&gt;removeMediator(mediatorName:String):IMediator&lt;br /&gt;removeProxy(proxyName:String):IProxy&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;//檢查 Command, Mediator, Proxy 是否已註冊&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;hasCommand(notificationName:String):Boolean&lt;br /&gt;hasMediator(mediatorName:String):Boolean&lt;br /&gt;hasProxy(proxyName:String):Boolean&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;Protected 屬性及方法有：&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;instance : IFacade [static]&lt;br /&gt;model : IModel&lt;br /&gt;view : IView&lt;br /&gt;controller : IController&lt;/b&gt;&lt;/div&gt;//初始化的方法&lt;br /&gt;&lt;div style="color: #eeeeee;"&gt;&lt;b&gt;initializeFacade():void    &lt;br /&gt;initializeModel():void  &lt;br /&gt;initializeView():void&lt;br /&gt;initializeController():void&lt;/b&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Facade 的範例 ApplicationFacade.as：&lt;br /&gt;&lt;pre class="brush: as3"&gt;package com.me.myapp{&lt;br /&gt;//import&lt;br /&gt;import com.me.myapp.view.*;&lt;br /&gt;import com.me.myapp.model.*;&lt;br /&gt;import com.me.myapp.controller.*;&lt;br /&gt;&lt;br /&gt;import org.puremvc.as3.interfaces.*;&lt;br /&gt;import org.puremvc.as3..patterns.facade.*;&lt;br /&gt;&lt;br /&gt;// 繼承 Façade, 實作 IFacade&lt;br /&gt;public class ApplicationFacade extends Façade implements IFacade{&lt;br /&gt; // 為 Notification 定義常數&lt;br /&gt; public static const STARTUP:String = "startup";&lt;br /&gt; public static const LOGIN:String = "login";&lt;br /&gt; // 用以取得單一實體的工廠方法&lt;br /&gt; public static function getInstance() : ApplicationFacade{&lt;br /&gt;  if ( instance == null ) instance = new ApplicationFacade();&lt;br /&gt;  return instance as ApplicationFacade;&lt;br /&gt; }&lt;br /&gt; // 初始化 Controller，註冊 Command (建立 Notification 與 Command 的對應關係)&lt;br /&gt; override protected function initializeController( ):void{&lt;br /&gt;  super.initializeController();&lt;br /&gt;  registerCommand( STARTUP, StartupCommand );&lt;br /&gt;  registerCommand( LOGIN, LoginCommand );&lt;br /&gt;  registerCommand( LoginProxy.LOGIN_SUCCESS, GetPrefsCommand );&lt;br /&gt; }&lt;br /&gt; /** 建立一個 startup 方法把應用程式作為參數傳入&lt;br /&gt;  * 並發出 Notification 將它送到已註冊的 StartupCommand&lt;br /&gt;  */&lt;br /&gt; public function startup( app:MyApp ):void{&lt;br /&gt;  sendNotification( STARTUP, app );&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;整理到這邊好像篇幅差不多了&lt;br /&gt;下一篇繼續來看 Proxy, Mediator, Command, 還有 Notification&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-1824449648349740154?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/1824449648349740154/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=1824449648349740154' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1824449648349740154'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1824449648349740154'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2011/02/puremvc-1.html' title='PureMVC 入門筆記-1'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-4896016823021845122</id><published>2010-12-26T23:04:00.002+08:00</published><updated>2010-12-27T00:51:43.022+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Error in an XML file: aborting build. 的解決方式</title><content type='html'>最近想來看一下 Android 的書&lt;br /&gt;稍微了解一下手機應用程式開發會是怎麼樣的&lt;br /&gt;&lt;br /&gt;但練習沒幾個範例就發現&lt;br /&gt;寫完 main.xml ...編譯的時候會出現錯誤訊息&lt;br /&gt;Error in an XML file: aborting build.&lt;br /&gt;同時也自動新增了一個 main.out.xml 的空白檔案&lt;br /&gt;但檢查來檢查去....程式碼都沒有錯誤阿&lt;br /&gt;&lt;br /&gt;反覆測試後發現在 Eclipse 使用 ADT 開發 Android 的 apk 時&lt;br /&gt;編譯的時候 Package Explorer 或編輯視窗不可以 focus 到任何一個 xml 檔案&lt;br /&gt;不然編譯就會上述有問題，且會自動生成該 xml 檔案的 out.xml 檔&lt;br /&gt;&lt;br /&gt;解決方式如下：&lt;br /&gt;1. 先刪除自動生成的 ****.out.xml 檔案&lt;br /&gt;2. 由於專案有錯誤是不能 compile 的，所以要先到 Project &gt; Clean... 把該專案狀態與錯誤清空&lt;br /&gt;3. 重新 Run (注意不要再 foucs 在 xml 檔案上)&lt;br /&gt;&lt;br /&gt;在這裡做個筆記，希望能幫上遇到相同困擾的新手們&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-4896016823021845122?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/4896016823021845122/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=4896016823021845122' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4896016823021845122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4896016823021845122'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2010/12/error-in-xml-file-aborting-build.html' title='Error in an XML file: aborting build. 的解決方式'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-2920590579535702785</id><published>2010-11-03T00:30:00.001+08:00</published><updated>2010-11-03T00:35:47.892+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='FlashRemoting'/><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>flash.net.registerClassAlias 與 Value Object</title><content type='html'>接續前面的內容，在 &lt;a href="http://edscb.blogspot.com/2010/10/zendamf.html"&gt;Zend_Amf 入門&lt;/a&gt; 裡面，透過 gateway 程式我們可以呼叫 PHP 的方法傳回資料&lt;br /&gt;今天來研究一下另一種 Typed Object 的方式，把 PHP 類別 mapping 到 ActionScript 裡面(這種專門用來存放資料的物件稱為 Value Object)&lt;br /&gt;&lt;br /&gt;首先回顧一下我們的 gateway，透過 addDirectory 我們把 AMFapp/ 下的 .php 動態載入&lt;br /&gt;&lt;pre class="brush: php"&gt;&amp;lt;?php&lt;br /&gt;require_once 'Zend/Amf/Server.php';&lt;br /&gt;&lt;br /&gt;$server = new Zend_Amf_Server();&lt;br /&gt;$server-&gt;addDirectory(dirname(__FILE__) . '/AMFapp/');&lt;br /&gt;&lt;br /&gt;$response = $server-&gt;handle();&lt;br /&gt;echo $response;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;接下來我們在 AMFapp 下面新開一個資料夾 vo，專門用來放 Value Object 的類別&lt;br /&gt;並在裡面建立一個 VOPerson.php&lt;br /&gt;&lt;pre class="brush: php"&gt;&amp;lt;?php&lt;br /&gt;class VOPerson{&lt;br /&gt; //注意這裡!! 用 public $_explicitType 設定類別別名&lt;br /&gt; public $_explicitType = "VOPersonAlias";&lt;br /&gt; &lt;br /&gt; public $fName = "Joseph 喬瑟夫";&lt;br /&gt; public $lName = "Joestar 喬斯達";&lt;br /&gt; public $favoriteFood = array("T-Bone Steak", "Fried Chicken", "Chewing Gum");&lt;br /&gt; &lt;br /&gt; protected $standName = "Hermit Purple";&lt;br /&gt; private $birthday = "1920-09-27";&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;除了用 public $_explicitType 設定類別別名外，也可以用 getASClassName 回傳類別別名&lt;br /&gt;兩種方式擇一即可&lt;br /&gt;&lt;pre class="brush: php"&gt;public function getASClassName(){&lt;br /&gt; return 'VOPersonAlias';&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;有了 mapping 的 PHP 類別後，我們再寫一個 TestVO.php (放在 AMFapp下) 用來回傳這個 VOPerson 類別&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: php"&gt;&amp;lt;?php&lt;br /&gt;//記得要把類別匯入&lt;br /&gt;include 'vo/VOPerson.php';&lt;br /&gt;&lt;br /&gt;class TestVO{&lt;br /&gt; public function getVOPerson(){&lt;br /&gt;  return new VOPerson();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;在 Flash 裡面我們也要準備一個跟 VOPerson 對應的類別，本例為 VOPerson.as&lt;br /&gt;範例方便起見就使用 default package&lt;br /&gt;&lt;pre class="brush: as3"&gt;package  {&lt;br /&gt; public class VOPerson {&lt;br /&gt;  public var fName:String;&lt;br /&gt;  public var lName:String;&lt;br /&gt;  public var country:String;&lt;br /&gt;  public var favoriteFood:Array;&lt;br /&gt;  //非 public 的物件成員是不會 mapping 過來的，這邊只是測試用而已&lt;br /&gt;  protected var standName:String;&lt;br /&gt;  private var birthday:String;&lt;br /&gt;  //這邊我們定義 toString 方法以便傾印資料&lt;br /&gt;  public function toString():String{&lt;br /&gt;   var s:String = "======== " + fName +" ‧ "+ lName +" ========\n";&lt;br /&gt;   s += "國籍: "+ country +"\n";&lt;br /&gt;   s += "喜歡的食物: "+ favoriteFood +"\n";&lt;br /&gt;   s += "替身名: "+ standName +"\n";&lt;br /&gt;   s += "生日: "+ birthday +"\n";&lt;br /&gt;   s += "=================================================";&lt;br /&gt;   return s;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;該準備的東西都齊了，組合!!&lt;br /&gt;ValueObjectTest1.fla&lt;br /&gt;&lt;pre class="brush: as3"&gt;import flash.net.*;&lt;br /&gt;&lt;br /&gt;//注意這裡!! 一定要註冊類別別名且與 $_explicitType 的值相同，這樣才可以正確識別&lt;br /&gt;registerClassAlias("VOPersonAlias", VOPerson);&lt;br /&gt;&lt;br /&gt;[Bindable]&lt;br /&gt;var person:VOPerson;&lt;br /&gt;&lt;br /&gt;var nc:NetConnection = new NetConnection();&lt;br /&gt;var responder:Responder = new Responder(onNCResult, onNCFault);&lt;br /&gt;nc.connect("http://localhost/zend_gateway.php");&lt;br /&gt;nc.call("TestVO.getVOPerson", responder);&lt;br /&gt;&lt;br /&gt;function onNCResult(re:*):void{&lt;br /&gt; person = VOPerson(re);&lt;br /&gt; trace(person); //因為我們寫了 toString()，所以可以直接 trace&lt;br /&gt;}&lt;br /&gt;function onNCFault(fault:Object):void{&lt;br /&gt; for(var s:String in fault){&lt;br /&gt;  trace(s);&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;如果順利的話就可以見到如下資訊&lt;br /&gt;可以看到非 public 的屬性是過不來的&lt;br /&gt;&lt;pre class="brush: text"&gt;======== Joseph 喬瑟夫 ‧ Joestar 喬斯達 ========&lt;br /&gt;國籍: U.S.A.&lt;br /&gt;喜歡的食物: T-Bone Steak,Fried Chicken,Chewing Gum&lt;br /&gt;替身名: null&lt;br /&gt;生日: null&lt;br /&gt;=================================================&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;如果出現錯誤訊息的話，請檢察類別別名是否有設定？&lt;br /&gt;在 PHP 跟 AS 裡面設的別名是否相同？&lt;br /&gt;需要的檔案是否正確匯入？...等&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-2920590579535702785?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/2920590579535702785/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=2920590579535702785' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2920590579535702785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2920590579535702785'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2010/11/flashnetregisterclassalias-value-object.html' title='flash.net.registerClassAlias 與 Value Object'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-4068310787656298887</id><published>2010-11-01T11:47:00.003+08:00</published><updated>2010-11-01T11:54:18.730+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='FlashRemoting'/><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>ActionScript (AMF3) 與 PHP 資料型別對照表</title><content type='html'>ActionScript (AMF3) 對應 PHP 資料型別&lt;br /&gt;&lt;table border="1" cellspacing="0"  bgcolor="#222" style="color:#bbb;"&gt;&lt;tr&gt;&lt;th&gt;ActionScript type (AMF3)&lt;/th&gt;&lt;th&gt;PHP type&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;undefined&lt;br/&gt;null&lt;/td&gt;&lt;td&gt;null&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;int&lt;/td&gt;&lt;td&gt;integer (超出範圍時為 float)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Number&lt;br/&gt;uint&lt;/td&gt;&lt;td&gt;float&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Boolean&lt;/td&gt;&lt;td&gt;boolean&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;String&lt;/td&gt;&lt;td&gt;string&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Array&lt;/td&gt;&lt;td&gt;array&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Xml&lt;/td&gt;&lt;td&gt;SimpleXml&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;flash.utils.ByteArray&lt;/td&gt;&lt;td&gt;string&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Object&lt;br/&gt;mx.collections.ArrayCollection&lt;/td&gt;&lt;td&gt;object&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;RemoteClass Object&lt;/td&gt;&lt;td&gt;class mapped object&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;date&lt;/td&gt;&lt;td&gt;Zend_Date&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;PHP 對應 ActionScript (AMF3) 資料型別&lt;br /&gt;&lt;table border="1" cellspacing="0" bgcolor="#222" style="color:#bbb;"&gt;&lt;tr&gt;&lt;th&gt;PHP type&lt;/th&gt;&lt;th&gt;ActionScript type (AMF3)&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;null&lt;/td&gt;&lt;td&gt;null&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;boolean&lt;/td&gt;&lt;td&gt;Boolean&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;string&lt;/td&gt;&lt;td&gt;String&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;integer&lt;br/&gt;float&lt;/td&gt;&lt;td&gt;Number&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;DomDocument&lt;/td&gt;&lt;td&gt;Xml&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;DateTime&lt;/td&gt;&lt;td&gt;Date&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Array (索引式陣列)&lt;/td&gt;&lt;td&gt;Array&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;object&lt;br/&gt;Array (關聯式陣列)&lt;/td&gt;&lt;td&gt;Object&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;RemoteClass Zend_Amf_Value_TypedObject&lt;/td&gt;&lt;td&gt;typed object&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;RemoteClass Zend_Amf_Value_ArrayCollection&lt;/td&gt;&lt;td&gt;mx.collections.ArrayCollection&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-4068310787656298887?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/4068310787656298887/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=4068310787656298887' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4068310787656298887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4068310787656298887'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2010/11/actionscript-amf3-php.html' title='ActionScript (AMF3) 與 PHP 資料型別對照表'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-2430921646417949820</id><published>2010-10-25T17:25:00.002+08:00</published><updated>2010-10-26T11:00:22.799+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='FlashRemoting'/><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>Zend_Amf 入門</title><content type='html'>上一篇整理了 Flash 的資料交換方式，這次要開始慢慢切入正題&lt;br /&gt;Flash Remoting 是 swf 使用 AMF 二元資料格式與伺服器的 Remoting Component 進行資料交換的技術(透過 HTTP)&lt;br /&gt;在 PHP 有 amfphp, Zend_Amf 等&lt;br /&gt;但由於 PHP 5.3 與 amfphp 1.9 在 localhost 測試時會出現錯誤&lt;br /&gt;在找不到解決方法下，我打算改由 Zend_Amf 來上手&lt;br /&gt;&lt;br /&gt;&lt;a href="http://framework.zend.com/"&gt;Zend Framework&lt;/a&gt; 是 Zend 公司針對 PHP 企業級開發的 Framework，而 Zend_Amf 就是其中的一組函式庫&lt;br /&gt;取得的方法很簡單，只要上官方網站下載後解壓縮打開即可&lt;br /&gt;&lt;br /&gt;而我是使用 svn 的方式來取得，既然是寫入門還是說清楚一點好了：&lt;br /&gt;1. 首先如果 PC 裡沒有安裝 svn 軟體，可以下載安裝 &lt;a href="http://tortoisesvn.net/downloads"&gt;TortoiseSVN (俗稱小烏龜)軟體&lt;/a&gt;&lt;br /&gt;2. 在電腦裡開一個資料夾並命名，如 Zend Framework，按右鍵選擇 SVN Checkout，網址輸入 http://framework.zend.com/svn/framework/standard/trunk&lt;br /&gt;3. 此時會跟網址上的檔案進行版本更新，但因為 Zend Framework 並不是很小，所以等它跑完大約需要幾分鐘&lt;br /&gt;&lt;br /&gt;至於布署方式，只要把 library 的內容放到網站目錄下即可&lt;br /&gt;(租用虛擬主機空間時由於無法更改主機設定故要用這種方式來布署)&lt;br /&gt;我是選擇直接在 php.ini 裡做 include 設定，檔案就不用貼來貼去占空間&lt;br /&gt;include 的方法如下：只要找到 include_path 這一行，然後以分號分隔把路徑加上去即可&lt;br /&gt;路徑請記得改成自己的...&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: text"&gt;; Windows: "\path1;\path2"&lt;br /&gt;include_path = ".;c:\php\includes;C:\Zend Framework\library"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;這樣安裝跟布署就完成了!!&lt;br /&gt;&lt;br /&gt;接下來還有一個重點就是要設定 Gateway 程式&lt;br /&gt;在網頁目錄下新增一個 zend_gateway.php 輸入以下程式碼&lt;br /&gt;並開一個子資料夾來放 remoting component，本例為 AMFapp/&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: php"&gt;&amp;lt;?php&lt;br /&gt;//匯入 Zend/Amf/Server.php 檔案&lt;br /&gt;require_once 'Zend/Amf/Server.php';&lt;br /&gt;&lt;br /&gt;// 建立 Server 物件&lt;br /&gt;$server = new Zend_Amf_Server(); //由於檔案是在 Zend/Amf/ (套件路徑)下，所以 new 的時候要寫為 Zend_Amf_Server&lt;br /&gt;$server-&gt;addDirectory('AMFapp/'); //呼叫  Zend_Amf_Server 的 addDirectory 方法，將指定路徑下的檔案自動加進來&lt;br /&gt;&lt;br /&gt;//呼叫 handle 方法處理資料並放入 $response 裡輸出&lt;br /&gt;$response = $server-&gt;handle();&lt;br /&gt;echo $response;&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;而在 AMFapp 裡，開一個 HelloWorld.php 來測試吧&lt;br /&gt;&lt;pre class="brush: php"&gt;&amp;lt;?php&lt;br /&gt;class HelloWorld{&lt;br /&gt; /**&lt;br /&gt;  * 就是 Hello World 啦!!&lt;br /&gt;  * @param string $arg&lt;br /&gt;  * @return string&lt;br /&gt;  */&lt;br /&gt; function sayHelloWorld($arg = ""){&lt;br /&gt;  $returnValue = "Hello Zend_Amf!! 如果看到這就成功嚕!!". $arg;&lt;br /&gt;  return $returnValue;&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;?&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;接下來是 ActionScript 的部分：(關於 NetConnection 的詳細內容請參閱官方文件)&lt;br /&gt;&lt;pre class="brush: as3"&gt;package {&lt;br /&gt; import flash.display.*;&lt;br /&gt; import flash.net.*;&lt;br /&gt; &lt;br /&gt; public class MyTest_zend_01 extends MovieClip {&lt;br /&gt;  private var ncZend:NetConnection;&lt;br /&gt;  private var rsZend:Responder;&lt;br /&gt;  &lt;br /&gt;  public function MyTest_zend_01() {&lt;br /&gt;   //建立 NetConnection 物件&lt;br /&gt;   ncZend = new NetConnection();&lt;br /&gt;   //將 Gateway 的完整路徑傳入 connect 方法&lt;br /&gt;   ncZend.connect("http://localhost/zend_gateway.php");&lt;br /&gt;   //建立 Responder 物件，指定回應與錯誤的 callback func&lt;br /&gt;   rsZend = new Responder(onResult, onFault);&lt;br /&gt;   //呼叫 call 方法開始連線&lt;br /&gt;   //注意這裡是用 SomeClass.SomeFunc 的表示方式&lt;br /&gt;   ncZend.call('HelloWorld.sayHelloWorld', rsZend, "這是傳入的字串");&lt;br /&gt;  }&lt;br /&gt;  //回應處理函式&lt;br /&gt;  private function onResult(result:Object):void {&lt;br /&gt;   trace(result);&lt;br /&gt;  }&lt;br /&gt;  //錯誤處理函式&lt;br /&gt;  private function onFault(err:Object):void {&lt;br /&gt;   trace("fault:");&lt;br /&gt;   for (var i:String in err) {&lt;br /&gt;    trace(i, ":", err[i]);&lt;br /&gt;   }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;測試發布時如果看到 output 有 trace 出訊息就表示成功了!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-2430921646417949820?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/2430921646417949820/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=2430921646417949820' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2430921646417949820'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2430921646417949820'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2010/10/zendamf.html' title='Zend_Amf 入門'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-4375177207957712230</id><published>2010-10-20T17:52:00.000+08:00</published><updated>2010-10-20T17:52:11.472+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>Flash 資料交換方式整理</title><content type='html'>把已知的 Flash 資料交換方式筆記整理一下 (部分參閱自 shinder 老師書裡的內容，請多多支持 shinder 老師的大作呦)&lt;br /&gt;&lt;br /&gt;● &lt;b style="color: #f1c232;"&gt;FlashVars&lt;/b&gt;&lt;br /&gt;使用時機：使用 URL-Encoded 字串，故我覺得很適合配合 JavaScript 把 GET 參數在一開始帶入 swf 裡&lt;br /&gt;可以參考&lt;a href="http://edscb.blogspot.com/2008/09/flashvars-in-as3-stageloaderinfoparamet.html"&gt;此篇舊文&lt;/a&gt;&lt;br /&gt;● &lt;b style="color: #f1c232;"&gt;ExternalInterface&lt;/b&gt;&lt;br /&gt;使用時機：swf 實體跟它的 Container 進行溝通，例如呼叫網頁上的 JavaScript  function 或 JavaScript 呼叫 actionscript function&lt;br /&gt;● &lt;b style="color: #f1c232;"&gt;LocalConnection&lt;/b&gt;&lt;br /&gt;使用時機：一個以上執行中的 swf 實體互相進行溝通用&lt;br /&gt;● &lt;b style="color: #f1c232;"&gt;URLLoader&lt;/b&gt;&lt;br /&gt;使用時機：透過 GET/POST 傳遞字串資料至 Server 並接收回應&lt;br /&gt;參考&lt;a href="http://edscb.blogspot.com/2008/10/flash_22.html"&gt;此篇舊文&lt;/a&gt;&lt;br /&gt;● &lt;b style="color: #f1c232;"&gt;XML&lt;/b&gt;&lt;br /&gt;使用時機：以字串方式傳遞結構性、且筆數較少的資料&lt;br /&gt;&lt;br /&gt;須伺服器環境配合的有下面兩種：&lt;br /&gt;● &lt;b style="color: #f1c232;"&gt;Flash Remoting&lt;/b&gt;&lt;br /&gt;使用時機：使用 HTTP 傳遞 AMF 格式的二元資料(可傳遞 Object 及 Array 等格式)，但必須 Server 有相對應的 Remoting Component&lt;br /&gt;● &lt;b style="color: #f1c232;"&gt;Socket&lt;/b&gt;&lt;br /&gt;使用時機：及時網路遊戲或聊天室，使用的是 TCP Socket 連線，需要 Socket Server&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-4375177207957712230?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/4375177207957712230/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=4375177207957712230' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4375177207957712230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4375177207957712230'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2010/10/flash.html' title='Flash 資料交換方式整理'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-8815531896158003925</id><published>2010-06-14T10:15:00.000+08:00</published><updated>2010-06-14T10:15:04.048+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='frameworks'/><title type='text'>備忘-Gaia Framework 安裝路徑</title><content type='html'>Gaia Framework 的 mxp 檔案用 Extension Manager 安裝之後&lt;br /&gt;會放在類似如下的路徑：&lt;br /&gt;C:\Documents and Settings\使用者帳號\Local Settings\Application Data\Adobe\Flash CS5\語系\Configuration\&lt;br /&gt;&lt;br /&gt;所以如果有語言版本上的問題導致 Gaia 安裝後卻找不到面板&lt;br /&gt;可以把該路徑下的相關檔案拷貝到正確語系的資料夾再重開 Flash 就可以找到了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-8815531896158003925?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/8815531896158003925/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=8815531896158003925' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/8815531896158003925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/8815531896158003925'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2010/06/gaia-framework.html' title='備忘-Gaia Framework 安裝路徑'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-1016382724385718467</id><published>2010-04-19T10:19:00.001+08:00</published><updated>2010-04-19T10:30:11.888+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='軟體設定'/><title type='text'>Dreamweaver 小技巧 - 自訂開新檔案範本</title><content type='html'>來分享一個簡單到一個不行的小小小技巧&lt;br /&gt;&lt;br /&gt;在 Dreamweaver  制定網站的 CSS 樣式時&lt;br /&gt;總是會有一些常用的樣式&lt;br /&gt;以前我每次都要去舊的檔案裡把可以通用的樣式找出來再貼進新的檔案裡&lt;br /&gt;再開始修修改改&lt;br /&gt;或著是乾脆重打&lt;br /&gt;&lt;br /&gt;但是每次都這樣搞也太累了&lt;br /&gt;有沒有省事一點的方法咧？&lt;br /&gt;可以參考一下這個小步驟：&lt;br /&gt;&lt;br /&gt;只要到 Adobe Dreamweaver 安裝路徑下的 &lt;br /&gt;&lt;b&gt;\configuration\DocumentTypes\NewDocuments&lt;/b&gt;&lt;br /&gt;這資料夾裡面放的是 Dreamweaver 在開新檔案時會使用的範本&lt;br /&gt;如果要修改範本就打開該檔案類型的 Default 檔&lt;br /&gt;例如要修改CSS的範本就打開 Default.css&lt;br /&gt;不管是注釋還是什麼的通通都盡情寫進去吧&lt;br /&gt;編輯完存檔就搞定啦！&lt;br /&gt;&lt;br /&gt;現在你可以在 Dreamweaver 裡選開新檔案&lt;br /&gt;然後選你剛改過範本的那個檔案類型(如 CSS)&lt;br /&gt;你會發現你剛剛修改的範本的確出現了&lt;br /&gt;&lt;br /&gt;如果你的 html 也有一個固定的 div 架構&lt;br /&gt;當然也可以制定在 Default.html 裡面&lt;br /&gt;&lt;br /&gt;雖然只是小小一個步驟&lt;br /&gt;不過在工作上還蠻方便的&lt;br /&gt;尤其是習慣寫注釋跟分區塊整理原始碼的人&lt;br /&gt;檔案一打開就有條有理的感覺超好的啦&lt;br /&gt;有路過的就參考看看嚕&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-1016382724385718467?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/1016382724385718467/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=1016382724385718467' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1016382724385718467'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1016382724385718467'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2010/04/dreamweaver.html' title='Dreamweaver 小技巧 - 自訂開新檔案範本'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-4302690273669518562</id><published>2010-04-09T16:38:00.002+08:00</published><updated>2010-04-09T16:42:22.279+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>Flash 如何在 SWF 檔案中內嵌字型</title><content type='html'>很久沒寫  blog 的我今天再來寫一篇基礎文章吧&lt;br /&gt;&lt;br /&gt;稍微有在寫 actionscript 的人應該碰過這樣的狀況，&lt;br /&gt;就是你想在某個地方放一個動態文字欄位&lt;br /&gt;但是動態文字如果不內嵌字型的話，就會是醜醜的鋸齒狀文字&lt;br /&gt;要是用了使用者電腦沒有的字體，還顯示不出來哩&lt;br /&gt;&lt;br /&gt;那麼要如何在SWF檔案中內嵌字型呢？&lt;br /&gt;作法其實要看你的狀況而定&lt;br /&gt;&lt;br /&gt;1. 動態文字的內容是固定的&lt;br /&gt;如果動態文字的內容是固定的，這樣的狀況可以考慮用 Flash IDE 的功能把要用的字內嵌在 SWF 檔案中&lt;br /&gt;由於中文字數遠多於英文字母，因此不建議全部嵌入&lt;br /&gt;只嵌入我們要的文字即可&lt;br /&gt;首先建立一個動態文字欄位 embed_txt，然後把你要內嵌的文字內容全部貼進去&lt;br /&gt;接下來在屬性面板打開字元內嵌的對話框&lt;br /&gt;並在"包括下列字元"這個選項，選擇"自動填字"，然後按下確定就可以了。&lt;br /&gt;(當然你也可以自己把會用到的字填到這一欄中)&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_HQaeOFYRlT4/S77hfqMQpBI/AAAAAAAAAH8/szHjqakM66g/s1600/flash-embed1.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://3.bp.blogspot.com/_HQaeOFYRlT4/S77hfqMQpBI/AAAAAAAAAH8/szHjqakM66g/s320/flash-embed1.gif" width="244" /&gt;&lt;/a&gt;&lt;/div&gt;接下來你可以把 embed_txt 裡的字給刪掉，或將他的 visible 設為 flase&lt;br /&gt;嵌入的文字在同一個檔案中是可以共用的&lt;br /&gt;因此同一個檔案如果有其他需要使用相同內嵌字的，只要內嵌一個空白就可以，不用重複嵌入。&lt;br /&gt;&lt;br /&gt;2. 動態文字的內容較多或不固定&lt;br /&gt;如果動態文字的內容是不固定或比較多，我們就該考慮是否要把整個字型給嵌入&lt;br /&gt;要嵌入整個字型當然也可以在字元內嵌的對話框中去做。&lt;br /&gt;但這樣整個字型都會包在要執行的 SWF 檔中，好一點的作法是把它變成另一個檔案再載入進來使用&lt;br /&gt;要發布字型的SWF檔案還是要靠 Flash IDE&lt;br /&gt;在 CS4 的 Library (元件庫)面板，點開右上角的功能表，然後選擇"新增字體"&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_HQaeOFYRlT4/S77houpwPlI/AAAAAAAAAIE/PzwMct8R6L0/s1600/flash-embed2.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_HQaeOFYRlT4/S77houpwPlI/AAAAAAAAAIE/PzwMct8R6L0/s320/flash-embed2.gif" /&gt;&lt;/a&gt;&lt;/div&gt;選擇你要嵌入的字體及樣式(如果是要把字體當做點陣圖嵌入的話要順便指定字體大小)&lt;br /&gt;連結部份勾選"匯出給 Actionscript 使用"，並指定類別名稱&lt;br /&gt;(順便可以看到他的基底類別是 flash.text.Font)&lt;br /&gt;確定後發布 SWF 檔。這樣我們就有一個字型檔案了&lt;br /&gt;接下來在另一個檔案把它載入吧&lt;br /&gt;開一個新檔案並輸入以下程式碼：&lt;br /&gt;&lt;pre class="brush:as3;"&gt;var ldrContext:LoaderContext = new LoaderContext();&lt;br /&gt;var wordLdr:Loader = new Loader();&lt;br /&gt;var myFont:Font;&lt;br /&gt;&lt;br /&gt;//指定載入的SWF檔的 applicationDomain 為 currentDomain&lt;br /&gt;ldrContext.applicationDomain = ApplicationDomain.currentDomain;&lt;br /&gt;&lt;br /&gt;wordLdr.contentLoaderInfo.addEventListener(Event.COMPLETE, onWordLdrComplete);&lt;br /&gt;try{&lt;br /&gt; //載入事先準備好有內嵌字型的 SWF 檔案&lt;br /&gt; wordLdr.load(new URLRequest("DFLiKaiShu-Md.swf"), ldrContext);&lt;br /&gt;}catch(err:Error){&lt;br /&gt; trace(err);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function onWordLdrComplete(event:Event):void{&lt;br /&gt; //使用  getDefinitionByName 傳入類別名稱&lt;br /&gt; var fontClass:Class;&lt;br /&gt; fontClass = getDefinitionByName("Font_DFLiKaiShuMd") as Class;&lt;br /&gt; //註冊字型&lt;br /&gt; Font.registerFont(fontClass);&lt;br /&gt; //如果不知道字型名稱，就把它 new 出來，就可讀取 fontName 屬性&lt;br /&gt; myFont = new fontClass;&lt;br /&gt; useFont();&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var tf:TextFormat;&lt;br /&gt;var t0:TextField= new TextField();&lt;br /&gt;t0.autoSize = TextFieldAutoSize.LEFT;&lt;br /&gt;//embedFonts = true 表示使用內嵌字體&lt;br /&gt;t0.embedFonts = true;&lt;br /&gt;this.addChild(t0);&lt;br /&gt;&lt;br /&gt;function useFont():void{&lt;br /&gt; //字型的名稱如果已經知道的話，不用new出myFont直接填入名稱字串也是可以&lt;br /&gt; tf = new TextFormat(myFont.fontName, 18); &lt;br /&gt; t0.defaultTextFormat = tf;&lt;br /&gt; t0.text = "這裡的字會是華康儷楷書!!";&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;這樣就可以把內嵌字型給載入進來了，不過字型SWF檔案動輒好幾MB&lt;br /&gt;最好是控制動態文字的字型不要太多，否則讀進這麼大容量的檔案也不是一件好事阿。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-4302690273669518562?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/4302690273669518562/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=4302690273669518562' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4302690273669518562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4302690273669518562'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2010/04/flash-swf.html' title='Flash 如何在 SWF 檔案中內嵌字型'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_HQaeOFYRlT4/S77hfqMQpBI/AAAAAAAAAH8/szHjqakM66g/s72-c/flash-embed1.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-3044395920555520227</id><published>2010-01-19T11:17:00.003+08:00</published><updated>2010-01-19T11:44:50.175+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='frameworks'/><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>Gaia Framework - API 簡易說明</title><content type='html'>這幾天把 Gaia API 的官方文件稍微翻譯一下&lt;br /&gt;以下大致整理 Gaia Framework API 方法(AS3)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;goto(branch:String, flow:String = null):void&lt;/b&gt;&lt;br /&gt;呼叫goto方法前往網站的分支(branch)，如果該分支不存在會找到最近的&lt;br /&gt;如果傳入的分支層級超過 site.xml 裡的架構，Gaia會記住該 branch 字串並發出 deeplink 事件，可用 getDeeplink() 得出這種 branch 字串。&lt;br /&gt;第二個參數 flow 的值為 Gaia.NORMAL, Gaia.PRELOAD, and Gaia.REVERSE&lt;br /&gt;例：&lt;br /&gt;&lt;pre class="brush: xml;"&gt;Gaia.api.goto("index/nav/people/friends");&lt;br /&gt;Gaia.api.goto(Pages.HOME); //前往"index/nav/home"，建議使用這種方式，這樣若架構變更也不會有影響&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;getPage(branch:String):IPageAsset&lt;/b&gt;&lt;br /&gt;傳入branch字串，回傳PageAsset，若字串不是有效的id則回傳null可利用它得到PageAsset物件進而利用content屬性對頁面的成員做操控(看來是擴充自 Loader)；PageAsset還有一個屬性children:Object可用來存取其下層物件&lt;br /&gt;例：&lt;br /&gt;&lt;pre class="brush: xml;"&gt;Gaia.api.getPage("index/nav/home").content.myProp = value;&lt;br /&gt;Gaia.api.getPage("index/nav/home").content.myFunc();&lt;br /&gt;Gaia.api.getPage("index/nav/home").content.MC_Movieclip.x = 10;&lt;/pre&gt;&lt;br /&gt;&lt;b&gt;getDepthContainer(depth:String):Sprite&lt;/b&gt;&lt;br /&gt;回傳 Sprite 或 MovieClip 深度容器。必須傳入dapth常數。(Gaia.TOP, Gaia.MIDDLE, Gaia.BOTTOM, Gaia.PRELOADER)&lt;br /&gt;例：&lt;br /&gt;&lt;pre class="brush: xml;"&gt;var top:Sprite = getDepthContainer(Gaia.TOP);&lt;/pre&gt;&lt;b&gt;getDeeplink():String&lt;/b&gt; 從GaiaSWFAddress類別回傳超出site.xml領域的深層鏈結。&lt;br /&gt;&lt;b&gt;getSiteTitle():String&lt;/b&gt;&lt;br /&gt;&lt;b&gt;setSiteTitle(value:String):void&lt;/b&gt;&lt;br /&gt;回傳/設定 該網站的 title 屬性值(包含 %PAGE% 標記)。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;getValidBranch(branch:String):String&lt;/b&gt; 把傳入 branch 字串轉為有效branch字串&lt;br /&gt;&lt;b&gt;getCurrentBranch():String&lt;/b&gt; 回傳目前branch。&lt;br /&gt;&lt;b&gt;setDelimiter(value:String):void&lt;/b&gt; 設定網站的分隔符號。完成後需呼叫refreshContextMenu()把ContextMenu更新。&lt;br /&gt;&lt;b&gt;getSiteTree():PageAsset&lt;/b&gt; 傳回index頁的PageAsset實體。&lt;br /&gt;&lt;b&gt;getMenuArray():Array&lt;/b&gt; 回傳site.xm中所有menu="true"的頁面的陣列。(從上到下排列)&lt;br /&gt;&lt;b&gt;getSiteXML():XML&lt;/b&gt; 回傳原始site.xml&lt;br /&gt;&lt;br /&gt;&lt;b&gt;getContextMenu():ContextMenu&lt;/b&gt;&lt;br /&gt;&lt;b&gt;refreshContextMenu():void&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;getPreloader():IMovieClip&lt;/b&gt; 回傳preloader。可以用它來呼叫自訂方法、重新定位等。&lt;br /&gt;&lt;b&gt;setPreloader(asset:MovieClipAsset):Void&lt;/b&gt; 用已載入的 MovieClipAsset 覆蓋preloader。不傳參數呼叫時則恢復預設。&lt;br /&gt;&lt;b&gt;getAssetPreloader():IMovieClip&lt;/b&gt;&lt;br /&gt;&lt;b&gt;getAssetPreloader():IMovieClip&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;getDefaultFlow():String&lt;/b&gt;&lt;br /&gt;&lt;b&gt;setDefaultFlow(flow:String):Void&lt;/b&gt;&lt;br /&gt;回傳/設定網站的預設flow。值為 Gaia.NORMAL, Gaia.PRELOAD, Gaia.REVERSE 或 Gaia.CROSS。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Gaia.api.addAssets(nodes:XMLList, page:IPageAsset):void&lt;/b&gt; 在runtime為頁面添加外部動態assets 。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;getWidth():int&lt;/b&gt;&lt;br /&gt;&lt;b&gt;getHeight ():int&lt;/b&gt;&lt;br /&gt;回傳stage原始 寬/高&lt;br /&gt;&lt;br /&gt;&lt;b&gt;getSitePosition():Object&lt;/b&gt; 以Object型態回傳目前Site View的x, y位置。對於要網站置中時有用。&lt;br /&gt;&lt;b&gt;setLoadTimeout(value:int):void&lt;/b&gt; 調整Gaia在載入branch時的容許等待時間，以毫秒為單位，預設值為10000。&lt;br /&gt;&lt;b&gt;setPreloaderDelay(value:int):void&lt;/b&gt; preloader呼叫transitionIn()的延遲時間(防止從快取載入時，preloader先跑出來)。預設150毫秒，可傳入的最小值為1。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;setGlobalVolume(value:Number, duration:Number = 0; onComplete:Function = null):void&lt;/b&gt; 設定整個網站的全域數值。如果有傳入duration參數，它會在指定時間內漸變到該數值。如果有傳入onComplete參數，會在漸變完成後呼叫該function。&lt;br /&gt;&lt;b&gt;getGlobalVolume():Number&lt;/b&gt; 回傳目前全域數值。&lt;br /&gt;&lt;br /&gt;&lt;b&gt;getAvailableFonts():Array&lt;/b&gt; 回傳使用Runtime Font Loading成功註冊的所有字體類別名稱的陣列。&lt;br /&gt;&lt;b&gt;getFontName(className:String):String&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;SWFAddress Proxy方法&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;back():Void&lt;/b&gt;&lt;br /&gt;&lt;b&gt;forward():Void&lt;/b&gt;&lt;br /&gt;&lt;b&gt;getTitle():String&lt;/b&gt;&lt;br /&gt;&lt;b&gt;setTitle(title:String):Void&lt;/b&gt;&lt;br /&gt;&lt;b&gt;href(url:String, target:String):Void&lt;/b&gt;&lt;br /&gt;&lt;b&gt;popup(url:String, name:String, options:String, handler:String):Void&lt;/b&gt;&lt;br /&gt;&lt;b&gt;setHistory(b:Boolean):Void&lt;/b&gt; 除非你在site.xml的site節點設定history="false"，否則預設是開啟。&lt;br /&gt;&lt;b&gt;getHistory():Boolean&lt;/b&gt;&lt;br /&gt;&lt;b&gt;setTracker(s:String):Void&lt;/b&gt; 設定瀏覽追蹤函數。預設值為'urchinTracker'。&lt;br /&gt;&lt;b&gt;getTracker():String&lt;/b&gt;&lt;br /&gt;&lt;b&gt;getBaseURL():String&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-3044395920555520227?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/3044395920555520227/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=3044395920555520227' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3044395920555520227'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3044395920555520227'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2010/01/gaia-framework-api.html' title='Gaia Framework - API 簡易說明'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-7836570756326942369</id><published>2009-12-09T16:16:00.017+08:00</published><updated>2009-12-10T01:07:32.140+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='frameworks'/><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>用於 Flash 網站前端開發的 GAIA Flash Framework-1</title><content type='html'>GAIA Framework For Adobe Flash&lt;br /&gt;是一個開放原始碼的 Flash 網站前端開發 framework&lt;br /&gt;支援 AS3 與 AS2&lt;br /&gt;整合 SWFObject, SWFAddress, TweenLite, DeMonster Debugger 等相關的東西&lt;br /&gt;目前最新版是 Version 3.1.9&lt;br /&gt;&lt;br /&gt;Adobe TV 裡有一段約一小時的影片是作者 Steven Scaks 對於 GAIA Flash Framework 做的介紹&lt;br /&gt;&lt;a href="http://tv.adobe.com/watch/fitc/gaia-framework-for-adobe-flash/"&gt;http://tv.adobe.com/watch/fitc/gaia-framework-for-adobe-flash/&lt;/a&gt;&lt;br /&gt;看完之後感覺用這個來做 flash 網站的話應該是會蠻快的&lt;br /&gt;可以專心在製作頁面內容上&lt;br /&gt;&lt;br /&gt;想玩玩看的話可以上官方網站 &lt;a href="http://www.gaiaflashframework.com/"&gt;http://www.gaiaflashframework.com/&lt;/a&gt;&lt;br /&gt;下載這個 framework 的 mxp 檔，安裝在 Flash CS3 或 CS4&lt;br /&gt;或是先在該站首頁的左側看看那些使用本框架做出來的酷炫網站&lt;br /&gt;&lt;br /&gt;官方的文件我稍微看了一下&lt;br /&gt;目前的感覺是這個 framework 的確如作者所說&lt;br /&gt;不會試圖改變開發者原本的習慣&lt;br /&gt;而是提供快速的方法來幫助架構的建置&lt;br /&gt;整個框架似乎還蠻好了解與上手的&lt;br /&gt;而且是開放原始碼所以便於修改及研究&lt;br /&gt;但還是要真正拿來實做一下才會知道好不好用&lt;br /&gt;doc 也要詳細 k 一下才能了解所有的機制跟功能&lt;br /&gt;&lt;br /&gt;後續文章會把 study 官方網站的 doc 後做一些整理...&lt;br /&gt;但何時會有後續咧...我也不確定耶&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-7836570756326942369?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/7836570756326942369/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=7836570756326942369' title='5 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7836570756326942369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7836570756326942369'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/12/flash-gaia-flash-framework.html' title='用於 Flash 網站前端開發的 GAIA Flash Framework-1'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-831368262726032899</id><published>2009-12-09T11:49:00.004+08:00</published><updated>2009-12-12T23:11:07.210+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Flex 筆記-養成良好習慣之 mxml 的 tag 順序</title><content type='html'>雖然在順序上面好像是沒有硬性的規定&lt;br /&gt;不過在 Adobe 官方的教學影片 Flex 4 beta in a week 裡面建議了 mxml 的順序應該依照下面順序來放置：&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Properties of the parent&lt;/b&gt;(屬於本檔案最外層 container 的屬性，如 layout&lt;br /&gt;, states 跟 transitions 標籤)&lt;br /&gt;&lt;b&gt;Metadata&lt;/b&gt; (後設標籤，如[Event]等等，可&lt;a href="http://edscb.blogspot.com/2009/06/actionscript-metadata-tags.html"&gt;參考這裡&lt;/a&gt;)&lt;br /&gt;&lt;b&gt;Styles&lt;/b&gt; (css 樣式)&lt;br /&gt;&lt;b&gt;Script&lt;/b&gt; (ActionScript)&lt;br /&gt;&lt;b&gt;Declarations&lt;/b&gt; (非視覺化的 tag )&lt;br /&gt;&lt;b&gt;UI components&lt;/b&gt; (所有看得到的 components)&lt;br /&gt;&lt;br /&gt;每一個區塊最好是用註解分隔開來&lt;br /&gt;&lt;br /&gt;當然啦&lt;br /&gt;tag 裡面的屬性應該要一行一個，或是相關的屬性放在同一行&lt;br /&gt;這一點透過 &lt;a href="http://sourceforge.net/projects/flexformatter/"&gt;Flex Formater&lt;/a&gt; 可以做很個人化的設定與排序&lt;br /&gt;&lt;br /&gt;以上兩點好習慣養成&lt;br /&gt;這樣對於易讀性會提高很多&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-831368262726032899?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/831368262726032899/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=831368262726032899' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/831368262726032899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/831368262726032899'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/12/flex-mxml-tag.html' title='Flex 筆記-養成良好習慣之 mxml 的 tag 順序'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-6737609529128216911</id><published>2009-12-02T15:19:00.018+08:00</published><updated>2009-12-09T11:50:26.832+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Flex 筆記 - 讀取 XML 資料並做 filtering</title><content type='html'>之前花了很多時間在 &lt;a href="http://www.adobe.com/devnet/flex/videotraining/"&gt;Flex in a week&lt;/a&gt; 上面&lt;br /&gt;現在把一些 MXML 的基礎整理一下放上來&lt;br /&gt;也算是對於這段時間的學習做個交代(不然 Flex 4 都要出了說...)&lt;br /&gt;&lt;br /&gt;&lt;pre class="brush: xml;"&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;MX:APPLICATION creationComplete="init()" xmlns:mx="http://www.adobe.com/2006/mxml"&amp;gt;&lt;br /&gt; &amp;lt;MX:SCRIPT&amp;gt;&lt;br /&gt;   &amp;lt;![CDATA[&lt;br /&gt;   import mx.collections.XMLListCollection;&lt;br /&gt;   import mx.controls.Alert;&lt;br /&gt;   import mx.rpc.events.FaultEvent;&lt;br /&gt;   import mx.rpc.events.ResultEvent;&lt;br /&gt;   &lt;br /&gt;   [Bindable]&lt;br /&gt;   private var myData1:XMLListCollection = new XMLListCollection();&lt;br /&gt;   &lt;br /&gt;   protected function init():void{&lt;br /&gt;    httpSer1.send();&lt;br /&gt;   }&lt;br /&gt;   protected function httpSer1_faultHandler(event:FaultEvent):void{&lt;br /&gt;    Alert.show(event.message.toString(),"錯誤訊息：");&lt;br /&gt;   }&lt;br /&gt;   protected function httpSer1_resultHandler(event:ResultEvent):void{&lt;br /&gt;    var list:XMLList = event.result.dataItem;&lt;br /&gt;    myData1.source = list;&lt;br /&gt;   }&lt;br /&gt;   protected function searchBtn_clickHandler(event:MouseEvent):void{&lt;br /&gt;    if (searchText.text != "") myData1.filterFunction = searchMyData;&lt;br /&gt;    else myData1.filterFunction = null;  &lt;br /&gt;    myData1.refresh();&lt;br /&gt;   }&lt;br /&gt;   protected function searchMyData(item:XML):Boolean{&lt;br /&gt;    var searchResult:XMLList = item.(firstname == searchText.text || lastname == searchText.text);&lt;br /&gt;    if (searchResult.length() &amp;gt; 0) return true;&lt;br /&gt;    else return false;&lt;br /&gt;   }&lt;br /&gt;  ]]&amp;gt;&lt;br /&gt;&amp;lt;/MX:SCRIPT&amp;gt;&lt;br /&gt; &amp;lt;MX:HTTPSERVICE id=httpSer1 result="httpSer1_resultHandler(event)" fault="httpSer1_faultHandler(event)" resultFormat="e4x" url="assets/myData.xml" /&amp;gt;&lt;br /&gt; &amp;lt;MX:HBOX&amp;gt;&lt;br /&gt;  &amp;lt;MX:TEXTINPUT id=searchText /&amp;gt;&lt;br /&gt;  &amp;lt;MX:BUTTON id=searchBtn click="searchBtn_clickHandler(event)" label="Search" /&amp;gt;&lt;br /&gt; &amp;lt;/MX:HBOX&amp;gt;&lt;br /&gt; &amp;lt;MX:DATAGRID id=myDataGrid dataProvider="{myData1}"&amp;gt;&lt;br /&gt;  &amp;lt;MX:COLUMNS&amp;gt;&lt;br /&gt;   &amp;lt;MX:DATAGRIDCOLUMN headerText="First" dataField="firstname" /&amp;gt;&lt;br /&gt;   &amp;lt;MX:DATAGRIDCOLUMN headerText="Last" dataField="lastname" /&amp;gt;&lt;br /&gt;  &amp;lt;/MX:COLUMNS&amp;gt;&lt;br /&gt; &amp;lt;/MX:DATAGRID&amp;gt;&lt;br /&gt;&amp;lt;/MX:APPLICATION&amp;gt;&lt;br /&gt;&lt;/pre&gt;重點說明:&lt;br /&gt;1. 利用 HTTPService 標籤讀取 xml 資料，resultFormat 設為 e4x&lt;br /&gt;2. 將 result 放入 XMLListCollection 實體的 source 中，因為 Collection 這種類別可以進行篩選&lt;br /&gt;3. 篩選功能利用的是 XMLListCollection 的 filterFunction 屬性指定實際進行篩選的 function，再利用 XMLListCollection 的 refresh() 方法更新&lt;br /&gt;4. filterFunction 必須要將合乎篩選規則的資料 回傳 true&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-6737609529128216911?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/6737609529128216911/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=6737609529128216911' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/6737609529128216911'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/6737609529128216911'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/12/flex-xml-datagrid.html' title='Flex 筆記 - 讀取 XML 資料並做 filtering'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-3510561176685064293</id><published>2009-11-10T17:54:00.002+08:00</published><updated>2009-11-10T18:49:58.688+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>jQuery-動畫效果</title><content type='html'>&lt;table border="1" cellspacing="0"&gt;&lt;tr&gt;&lt;th scope="col"&gt;分類&lt;/th&gt;&lt;th scope="col"&gt;方法&lt;/th&gt;&lt;th scope="col"&gt;說明&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th rowspan="3" scope="row"&gt;基本&lt;/th&gt;&lt;td&gt;.show()&lt;/td&gt;&lt;td rowspan="2"&gt;可傳入&lt;br /&gt;'fast'(0.2秒)、'normal'(0.4秒)、'slow'(0.6秒)或毫秒數&lt;br /&gt;第二個參數可傳入 callback&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;.hide()&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;.toggle()&lt;/td&gt;&lt;td&gt;可傳入 boolean 值，或速度與 callback&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th rowspan="3" scope="row"&gt;滑動&lt;/th&gt;&lt;td&gt;.slideDown(speed)&lt;/td&gt;&lt;td rowspan="3"&gt;可傳入&lt;br /&gt;'fast'(0.2秒)、'normal'(0.4秒)、'slow'(0.6秒)或毫秒數&lt;br /&gt;第二個參數可傳入 callback&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;.slideUp(speed)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;.slideToggle(speed)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th rowspan="3" scope="row"&gt;淡入淡出&lt;/th&gt;&lt;td&gt;.fadeIn(speed)&lt;/td&gt;&lt;td rowspan="2"&gt;可傳入&lt;br /&gt;'fast'(0.2秒)、'normal'(0.4秒)、'slow'(0.6秒)或毫秒數&lt;br /&gt;第二個參數可傳入 callback&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;.fadeOut(speed)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;.fadeTo(speed, opacity)&lt;/td&gt;&lt;td&gt;傳入速度, 透明度(第三參數為 callback)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th rowspan="2" scope="row"&gt;自訂動畫&lt;/th&gt;&lt;td&gt;.animate()&lt;/td&gt;&lt;td&gt;參數為( params, [duration], [easing], [callback] )&lt;br /&gt;easing 除了"linear"跟"swing"外，都需要 plugin&lt;br /&gt;例：$("#block").animate({width:"70%", opacity:0.4, fontSize:"3em"}, 1500);&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;.stop([clearQueue], [gotoEnd])&lt;/td&gt;&lt;td&gt;停止動畫&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;設定指令&lt;/th&gt;&lt;td&gt;jQuery.fx.off&lt;/td&gt;&lt;td&gt;設為 true 則 disable 所有動畫&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="1" cellspacing="0"&gt;&lt;tr&gt;&lt;th scope="col"&gt;分類&lt;/th&gt;&lt;th scope="col"&gt;方法&lt;/th&gt;&lt;th scope="col"&gt;說明&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th rowspan="2" scope="row"&gt;佇列&lt;br /&gt;(可與動畫串接)&lt;/th&gt;&lt;td&gt;.queue()&lt;/td&gt;&lt;td&gt;將非效果的方法也排入佇列&lt;br /&gt;傳入 callback 則為在佇列結尾附加 callback&lt;br /&gt;若已存在佇列，傳入新佇列會取代舊佇列&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;.dequeue()&lt;/td&gt;&lt;td&gt;執行佇列中的下一個動畫&lt;br /&gt;(若沒有在 queue 後面執行 dequeue 則動畫會停止)&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-3510561176685064293?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/3510561176685064293/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=3510561176685064293' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3510561176685064293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3510561176685064293'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/11/jquery.html' title='jQuery-動畫效果'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-8342408373101177722</id><published>2009-11-10T17:15:00.003+08:00</published><updated>2009-11-10T20:55:34.653+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS與Html'/><title type='text'>在 css 中執行 js 陳述式 (IE only)</title><content type='html'>今天在逛同事 Bruce 的部落格, 看到了一個在 CSS 裡執行 js 的方式&lt;br /&gt;原來還有這一招阿! 趕快給它學起來...&lt;br /&gt;&lt;br /&gt;&amp;lt;style&amp;gt;&lt;br /&gt;a{&lt;br /&gt;noframe:expression(this.onFocus=this.blur()); &lt;br /&gt;/*noframe為自訂屬性名，可替換為任意名稱*/&lt;br /&gt;}&lt;br /&gt;img.altImg1{&lt;br /&gt;text:expression(src="myImage.jpg");&lt;br /&gt;width:expression(300 +"px");&lt;br /&gt;}&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;br /&gt;&lt;br /&gt;...(略)&lt;br /&gt;&lt;br /&gt;&amp;lt;img id="altImg" class="altImg1"&amp;gt;&lt;br /&gt;&amp;lt;a href="#"&amp;gt;這個連結點下去時不會有虛線框&amp;lt;/a&amp;gt;&lt;br /&gt;&lt;br /&gt;如上，透過在 css 裡面執行 expression() 方法，就可以替該 DOM 元素的屬性給值&lt;br /&gt;但可別高興得太早阿&lt;br /&gt;經過我驗證之後，發現這個功能是 IE 擴充的，而非 W3C 標準&lt;br /&gt;也就是說它&lt;strong&gt;在其他瀏覽器上沒有作用!!&lt;/strong&gt;&lt;br /&gt;哇哩咧...這不是白玩了嗎??&lt;br /&gt;不過也許可以利用這一點來做一些 IE hack&lt;br /&gt;例如 IE 不支援的 fixed定位，或是 max-width 與 max-height&lt;br /&gt;下次有機會再來 try try 看吧&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-8342408373101177722?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/8342408373101177722/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=8342408373101177722' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/8342408373101177722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/8342408373101177722'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/11/css-js-ie-only.html' title='在 css 中執行 js 陳述式 (IE only)'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-1368452371583241928</id><published>2009-11-09T18:07:00.009+08:00</published><updated>2009-11-10T12:48:10.945+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jQuery'/><title type='text'>jQuery-選擇器</title><content type='html'>有鑑於每次要用 jQuery 的時候都要重新翻書確定一下用法&lt;br /&gt;所以乾脆還是把一些要用的資訊整理一下好了&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;選擇器 (Selector)：&lt;/strong&gt;&lt;br /&gt;&lt;table border="1" cellspacing="0"&gt;&lt;tr&gt;&lt;th scope="col"&gt;分類&lt;/th&gt;&lt;th scope="col"&gt;選擇器&lt;/th&gt;&lt;th scope="col"&gt;意義&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th rowspan="4"&gt;CSS 選擇器&lt;/th&gt;&lt;td&gt;標籤名稱&lt;/td&gt;&lt;td&gt;文件中所有該標籤的元素(element)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;#&lt;/td&gt;&lt;td&gt;id&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;.&lt;/td&gt;&lt;td&gt;class&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;,&lt;/td&gt;&lt;td&gt;用來結合不同條件&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th rowspan="3"&gt;子元素組合運算子&lt;/th&gt;&lt;td&gt;a&amp;gt;b 或 a b&lt;/td&gt;&lt;td&gt;a 的子元素 b&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;a+b&lt;/td&gt;&lt;td&gt;緊接 a 元素的 b 元素&lt;br /&gt;例：$('tr + td')&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;a~b&lt;/td&gt;&lt;td&gt;與 a 在同一層的 b 元素&lt;br /&gt;例：$('#myDiv ~ div')&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;屬性選擇器&lt;br /&gt;(支援正規表示式)&lt;/th&gt;&lt;td&gt;[]&lt;/td&gt;&lt;td&gt;屬性篩選&lt;br /&gt;^ 字串首&lt;br /&gt;$ 字串尾&lt;br /&gt;* 任意字&lt;br /&gt;! 反向&lt;br /&gt;例：$('a[href^=mailto:]')&lt;br /&gt;$('a[href$=.pdf]')&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th rowspan="15"&gt;自定選擇器&lt;/th&gt;&lt;td&gt;:eq(index)&lt;/td&gt;&lt;td&gt;索引值&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:gt(index)&lt;/td&gt;&lt;td&gt;索引值後&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:lt(index)&lt;/td&gt;&lt;td&gt;索引值前&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:visible&lt;/td&gt;&lt;td&gt;可視元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:hidden&lt;/td&gt;&lt;td&gt;隱藏的元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:first&lt;/td&gt;&lt;td&gt;第一個元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:last&lt;/td&gt;&lt;td&gt;最後一個元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:odd()&lt;/td&gt;&lt;td&gt;奇數&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:even()&lt;/td&gt;&lt;td&gt;偶數&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:has(selector)&lt;/td&gt;&lt;td&gt;含&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:not(selector)&lt;/td&gt;&lt;td&gt;不含&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:empty&lt;/td&gt;&lt;td&gt;無子元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:contains(text)&lt;/td&gt;&lt;td&gt;含有指定文字&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:header&lt;/td&gt;&lt;br /&gt;&lt;td&gt;&amp;lt;h1&amp;gt;到&amp;lt;h6&amp;gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:animated&lt;/td&gt;&lt;td&gt;正在動畫中的元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th rowspan="7"&gt;子元素選擇器&lt;/th&gt;&lt;td&gt;:child(formula)&lt;/td&gt;&lt;td&gt;公式的形式為 a*n+b &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:parent&lt;/td&gt;&lt;td&gt;父元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:first-child&lt;/td&gt;&lt;td&gt;第一個子元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:last-child&lt;/td&gt;&lt;td&gt;最後一個子元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:only-child&lt;/td&gt;&lt;td&gt;在父元素下是唯一的子元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:nth-child(index/even/odd/equation)&lt;/td&gt;&lt;td&gt;父元素的第index(從 1 開始)個子代元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:nth-&lt;/td&gt;&lt;td&gt;父元素的子代元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th rowspan="7"&gt;表單選擇器&lt;/th&gt;&lt;td&gt;:text&lt;br /&gt;:checkbox&lt;br /&gt;:radio&lt;br /&gt;:image&lt;br /&gt;:submit&lt;br /&gt;:reset&lt;br /&gt;:file&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:input&lt;/td&gt;&lt;td&gt;input, textarea, select, button 等元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:button&lt;/td&gt;&lt;td&gt;Button 元素及具有 type 屬性的 input 元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:enabled&lt;/td&gt;&lt;td&gt;作用中的表單元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:disabled&lt;/td&gt;&lt;td&gt;禁用中的表單元素&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:checked&lt;/td&gt;&lt;td&gt;被核取的radio button 和 checkbox&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;:selected&lt;/td&gt;&lt;td&gt;被選到的下拉選單 option&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;或是參考官方的 doc&lt;br /&gt;&lt;a href="http://docs.jquery.com/Selectors"&gt;http://docs.jquery.com/Selectors&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-1368452371583241928?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/1368452371583241928/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=1368452371583241928' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1368452371583241928'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1368452371583241928'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/07/jquery.html' title='jQuery-選擇器'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-3992933418887890413</id><published>2009-10-30T11:00:00.002+08:00</published><updated>2009-10-30T11:13:07.988+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>讓 IE 8 以下版本對 CSS 有更佳支援度的方法</title><content type='html'>昨天碰到一個 IE6 下的網頁樣式問題，因為一直解不掉覺得很傷腦筋&lt;br /&gt;今天不甘心上網查詢看看&lt;br /&gt;後來去同事 Bruce 的部落格竟然找到解決方法!!&lt;br /&gt;趕快我也記錄下來：&lt;br /&gt;&lt;br /&gt;&amp;lt;!--[if lt IE 8]&amp;gt;&lt;br /&gt;&amp;lt;script src=&amp;quot;http://ie7-js.googlecode.com/svn/version/2.0(beta3)/IE8.js&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&amp;lt;![endif]--&amp;gt;&lt;br /&gt;&lt;br /&gt;將以上這段碼貼到 head 標籤區塊內&lt;br /&gt;就可以讓 IE 8 以下版本對 CSS 有更佳支援度歐&lt;br /&gt;&lt;br /&gt;大家可以試試看呦!!&lt;br /&gt;在此也感謝 Bruce 啦!!&lt;br /&gt;&lt;br /&gt;出處：&lt;br /&gt;&lt;a href="http://code.google.com/p/ie7-js/"&gt;http://code.google.com/p/ie7-js/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-3992933418887890413?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/3992933418887890413/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=3992933418887890413' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3992933418887890413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3992933418887890413'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/10/ie-6-m3.html' title='讓 IE 8 以下版本對 CSS 有更佳支援度的方法'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-9137716358670596026</id><published>2009-10-20T18:40:00.005+08:00</published><updated>2010-03-22T14:42:42.599+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>Flash 的 cookie -- SharedObject 類別</title><content type='html'>今天要講的是已經存在很久我卻一直沒有機會用到...可以看作 "Flash 的 Cookie"的 ShareObject 類別(flash.net.SharedObject)&lt;br /&gt;&lt;br /&gt;這個類別可以把資料存進使用者電腦本機裡&lt;br /&gt;比 cookie 好用的地方在於，它可以存放如 Array 或 Object 這樣的物件資料型態&lt;br /&gt;這樣同一網域下的不同 swf 檔也可以共用資料了&lt;br /&gt;廢話不多說，直接介紹要怎麼用吧~~&lt;br /&gt;(這邊只介紹本機 SharedObject，更詳細用法或遠端 SharedObject 請直接查官方 doc)&lt;br /&gt;&lt;br /&gt;1. 建立或取得 SharedObject&lt;br /&gt;先建立一個 SharedObject 實體，然後使用 static 方法 SharedObject.getLocal(name:String, localPath:String = null, secure:Boolean = false) 依照傳入的名稱取得 SharedObject 回傳，若不存在則會建立&lt;br /&gt;例：&lt;br /&gt;var share_so:SharedObject;&lt;br /&gt;share_so = SharedObject.getLocal("localVar");&lt;br /&gt;&lt;br /&gt;2. 把需要存放的資料放進 SharedObject 實體的 data 屬性，注意不可直接將資料指給 share_so.data 否則會被忽略&lt;br /&gt;刪除 data 裡的某個資料應使用 delete&lt;br /&gt;例：&lt;br /&gt;share_so.data = this.myData; //無效&lt;br /&gt;share_so.data.myData1 = this.myData1; //正確&lt;br /&gt;share_so.data.items = items_array; //複雜資料型態&lt;br /&gt;share_so.myData2 = this.myData2; //可以，但其他同網域下的 swf 無法存取該屬性，且在該 swf 關閉後也不會被存在本機裡&lt;br /&gt;delete share_so.data.myData3; //刪除 myData3 的資料 (將 myData3 設為 null 或 undefined 並不會刪除它)&lt;br /&gt;&lt;br /&gt;3. SharedObject 會在被關閉前自動寫入本機，但可以呼叫 flush(minDiskSpace:int = 0) 立即將 SharedObject 寫到本機。&lt;br /&gt;minDiskSpace 為要求空間大小的位元組(建議一次要夠，因為如果可存取空間小於 minDiskSpace 的話，flash player 會跳出對話方塊要求使用者加大允許空間)&lt;br /&gt;這個方法會回傳 SharedObjectFlushStatus.PENDING 或 SharedObjectFlushStatus.FLUSHED&lt;br /&gt;例：&lt;br /&gt;var flushResult:String = share_so.flush();&lt;br /&gt;if(flushResult == SharedObjectFlushStatus.FLUSHED) trace("寫入完成!");&lt;br /&gt;else if(flushResult == SharedObjectFlushStatus.PENDING) trace("配置的空間不足以儲存此物件");&lt;br /&gt;&lt;br /&gt;4. 其他重要屬性&lt;br /&gt;size:uint (ShareObject 目前大小，以位元組為單位。)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;不過有幾點要注意：&lt;br /&gt;1.swf檔的尺寸必須大於 215x138。這是為了要在 swf 跳出對話方塊，以便使用者可以更改本機存放的資料大小設定(預設是 100KB)&lt;br /&gt;2.由於存放資料的空間大小是使用者可以變更設定的，所以資料有可能會因為使用者變更設定而遺失&lt;br /&gt;3.隱私權方面，swf 檔僅能讀寫在自己網域內的 SharedObject(但存在本機上的 swf 檔可以隨時將其他網域的共享物件寫入磁碟。)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-9137716358670596026?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/9137716358670596026/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=9137716358670596026' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/9137716358670596026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/9137716358670596026'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/10/flash-cookie-sharedobject.html' title='Flash 的 cookie -- SharedObject 類別'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-3628205489163109700</id><published>2009-10-14T11:40:00.006+08:00</published><updated>2009-10-14T12:00:50.370+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>為 swf 自訂右鍵選單</title><content type='html'>這小技巧其實已經用了很久了&lt;br /&gt;但是竟然一直沒有在這個 blog 裡寫一篇關於這個的備忘&lt;br /&gt;今天來補一下吧&lt;br /&gt;&lt;br /&gt;InteractiveObject 類別下層的每一個物件都可以有一個唯一快顯選單，可以將 Stage 屬性 showDefaultContextMenu 設為 false 移除選單中所有預設的命令( 除了「設定」和「關於」以外 )。&lt;br /&gt;那要怎麼自訂快顯選單咧~~&lt;br /&gt;先建立一個新的 ContextMenu 類別實體、呼叫 hideBuiltInItems() 方法，並將該實體指定給該 DisplayObject 實體的 contextMenu 屬性。&lt;br /&gt;&lt;br /&gt;下面來看看簡單的 Demo Code：&lt;br /&gt;&lt;br /&gt;import flash.net.*;&lt;br /&gt;import flash.ui.*;&lt;br /&gt;&lt;br /&gt;....(省略)&lt;br /&gt;&lt;br /&gt;private var customMenu:ContextMenu;&lt;br /&gt;private var customMenuItem:ContextMenuItem;&lt;br /&gt;&lt;br /&gt;....(省略)&lt;br /&gt;&lt;br /&gt;//===============================&lt;br /&gt;//custom ContextMenu setup&lt;br /&gt;private function initContextMenu():void {&lt;br /&gt;　customMenu = new ContextMenu();&lt;br /&gt;　customMenuItem = new ContextMenuItem("By Edward Lo");&lt;br /&gt;　customMenuItem.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, contextMenuHandler);&lt;br /&gt;　customMenu.hideBuiltInItems();&lt;br /&gt;　customMenu.customItems.push(customMenuItem);&lt;br /&gt;　this.contextMenu = customMenu;&lt;br /&gt;}&lt;br /&gt;//ContextMenuEvent Handler&lt;br /&gt;private function contextMenuHandler(e:ContextMenuEvent):void {&lt;br /&gt;　navigateToURL(new URLRequest("http://edscb.blogspot.com/"),"_blank");&lt;br /&gt;}&lt;br /&gt;//===============================&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-3628205489163109700?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/3628205489163109700/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=3628205489163109700' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3628205489163109700'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3628205489163109700'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/10/blog-post.html' title='為 swf 自訂右鍵選單'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-1266093582157789523</id><published>2009-10-09T17:40:00.003+08:00</published><updated>2009-10-09T18:19:13.263+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>TextField 的 htmlText 所支援的標籤</title><content type='html'>從 Flash 外部讀入文字資料，放入 TextArea 組件裡呈現時&lt;br /&gt;往往都會覺得文字的編排不美觀&lt;br /&gt;這時候就要靠 html 標籤來為文字資料指定樣式&lt;br /&gt;但網頁設計師可別高興得太早...Flash 支援的 html 標籤可是很有限阿&lt;br /&gt;不過做些簡單編排的話是還算夠用的&lt;br /&gt;以下把 Flash 支援的  html 標籤做個整理 (又在做沒營養的事情....)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;color:#515100;"&gt;&amp;lt;a&amp;gt;&lt;/span&gt;&lt;br /&gt;可用屬性：target、href&lt;br /&gt;&lt;span style="font-weight:bold;color:#515100;"&gt;&amp;lt;font&amp;gt;&lt;/span&gt;&lt;br /&gt;可用屬性：color、size、face (用法與 font-family 同)&lt;br /&gt;&lt;span style="font-weight:bold;color:#515100;"&gt;&amp;lt;img&amp;gt;&lt;/span&gt; 可以塞 SWF (表示它其實是個 Loader 來著)&lt;br /&gt;可用屬性：src、id (可藉 id 以 AS 進行控制)、width、height、align ( left 或 right)、hspace (預設為 8 )、vspace (預設為 8 )、checkPolicyFile&lt;br /&gt;&lt;span style="font-weight:bold;color:#515100;"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;&lt;br /&gt;可用屬性：align (有效值為 left、right、justify 和 center)、class (由 flash.text.StyleSheet 物件定義的 CSS 樣式類別 )&lt;br /&gt;&lt;span style="font-weight:bold;color:#515100;"&gt;&amp;lt;span&amp;gt;&lt;/span&gt;&lt;br /&gt;可用屬性：class (由 flash.text.StyleSheet 物件定義的 CSS 樣式類別 )&lt;br /&gt;&lt;span style="font-weight:bold;color:#515100;"&gt;&amp;lt;textformat&amp;gt;&lt;/span&gt;&lt;br /&gt;可用屬性：blockindent (區塊縮排)、indent (首行縮排)、leading (行距)、leftmargin、rightmargin、tabstops&lt;br /&gt;&lt;br /&gt;以下這些就不用多做介紹了：&lt;br /&gt;&lt;span style="font-weight:bold;color:#515100;"&gt;&amp;lt;li&amp;gt;&lt;/span&gt;項目符號(不排序)&lt;br /&gt;&lt;span style="font-weight:bold;color:#515100;"&gt;&amp;lt;b&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;color:#515100;"&gt;&amp;lt;i&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;color:#515100;"&gt;&amp;lt;u&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight:bold;color:#515100;"&gt;&amp;lt;br&amp;gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-1266093582157789523?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/1266093582157789523/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=1266093582157789523' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1266093582157789523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1266093582157789523'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/10/textfield-htmltext.html' title='TextField 的 htmlText 所支援的標籤'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-198760420515396618</id><published>2009-10-08T10:22:00.002+08:00</published><updated>2009-10-08T10:55:32.471+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>為 TextField 的 html 超連結加入事件機制</title><content type='html'>在 Flash 裡，文字欄位可以直接在屬性面板裡面設定超連結與目標視窗(target)&lt;br /&gt;這樣做的話滑鼠移動到該文字欄位時會變成手指圖示&lt;br /&gt;&lt;br /&gt;那麼若是超連結需要動態指定時，如何使用 ActionScript 3 達到相同效果呢?&lt;br /&gt;&lt;br /&gt;昨天我就遇到了這個問題&lt;br /&gt;一開始我在 TextField 監聽 MouseEvent.CLICK 事件，並指定處理函式負責連結到不同位置的功能&lt;br /&gt;功能上是沒問題，但這樣一來滑鼠游標就不是原本想要的手指圖案，而是文字的" I "圖示了&lt;br /&gt;本來想直接在文字上面放一個透明 MovieClip 就解決了&lt;br /&gt;但今天還是不甘心查了一下，想知道 Flash IDE 是怎麼做的&lt;br /&gt;往 TextField 的 htmlText 屬性去查，果然一查就查到了!!&lt;br /&gt;原來要在 TextField 的 htmlText 指定 &amp;lt;a&amp;gt; 標籤裡的 href 去發出 TextEvent.LINK&lt;br /&gt;趕快記下來：&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;font-style:italic;"&gt;(前略)...您可以使用 link 事件，讓連結執行 SWF 檔中的 ActionScript 函數，而不是開啟 URL。 若要指定 link 事件，請使用事件結構，而不是您的 href 特質中的 http 結構。 例如使用 href="event:myText"，而不是 href="http://myURL"。當使用者按一下包含事件配置的超文字連結時，文字欄位會傳送其 text 屬性設定為 "myText" 的 link TextEvent。 接著，您可以建立於傳送 link TextEvent 時執行的 ActionScript 函數。 您也可以使用樣式表，定義錨點標籤的 a:link、a:hover 及 a:active 樣式。 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;之前都沒有接觸過 TextEvent，這下子學到了!!&lt;br /&gt;以後可不能什麼都習慣用 MouseEvent 阿.....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-198760420515396618?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/198760420515396618/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=198760420515396618' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/198760420515396618'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/198760420515396618'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/10/textfield-html.html' title='為 TextField 的 html 超連結加入事件機制'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-7067752161327741326</id><published>2009-10-07T10:20:00.010+08:00</published><updated>2010-01-12T14:10:37.290+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>如何使用 AS3 + SWC 在 FlashDevelop 裡進行開發</title><content type='html'>&lt;a href="http://www.flashdevelop.org/community/index.php"&gt;Flash Develop&lt;/a&gt; 是使用 .NET 2.0 架構與 C# 語言所實作出來針對開發 Flash 平台的程式編輯器&lt;br /&gt;除了提供了不錯的編輯環境外，它還針對 Flash 的開發提出了不錯的 workflow&lt;br /&gt;&lt;br /&gt;這次要來談一談如何使用 AS3 + Flash IDE 發布的  SWC 元件在 Flash Develop 裡進行開發&lt;br /&gt;(本篇只討論開發流程，不介紹安裝與設定方面的細節，若需詳細資訊可參考 flashdevelop.org 官方文件)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;0. 專案建立&lt;/span&gt;&lt;br /&gt;　在 FlashDevelop 裡建立專案(官方建議是 AS3 Project with preloader，但如果是較簡單專案可選  AS3 Project 就好)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. 元件製作&lt;/span&gt;&lt;br /&gt;　(1) 視覺部分在 Flash IDE 裡繪製 (原始檔存在專案的 src 資料夾內)，也可以做時間軸動畫，但唯一要注意的是元件與其子元件的在元件庫裡的命名最好是相關而有意義的，否則很容易重覆或搞混&lt;br /&gt;　(2) 做好後在元件庫選該元件的右鍵"屬性"或"連結"，勾選"匯出給 ActionScript 使用"，並設定類別 (建議就是元件名稱，但建議加 package 以免混淆) 與基底類別 (預設 flash.display.MovieClip，但若元件本身沒有時間軸動畫建議改為 Sprite)&lt;br /&gt;　(3) 發布選項記得勾選 "匯出SWC"，發布路徑選擇專案的 lib 資料夾內&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. 程式撰寫&lt;/span&gt;&lt;br /&gt;　(1) 在 Flash Develop 裡為元件建立程式邏輯，官方提出了"繼承"與"組合"兩種方式，但建議是使用"組合"的方式，Demo Code 如下：&lt;br /&gt;// composition (safe choice)&lt;br /&gt;package {&lt;br /&gt;　import flash.display.Sprite;&lt;br /&gt;&lt;br /&gt;　public class MySymbol extends Sprite{&lt;br /&gt;　　private var design:MySymbol_design;&lt;br /&gt;&lt;br /&gt;　　public function MySymbol(){&lt;br /&gt;　　　trace("I'm a MySymbol instance called", name);&lt;br /&gt;　　　design = new MySymbol_design();&lt;br /&gt;　　　addChild(design);&lt;br /&gt;　　　// custom properties of design&lt;br /&gt;　　　design.text = "some text";&lt;br /&gt;　　　design.showText(); //可呼叫時間軸上的 function...但我個人不建議在 Flash IDE 寫任何 code&lt;br /&gt;　　　design.txtLabel.x += 100;&lt;br /&gt;　　}&lt;br /&gt;　}&lt;br /&gt;}&lt;br /&gt;　(2) 在專案的 Main Class 裡，new 出 MySymbol 並使用 addChild 加進來&lt;br /&gt;&lt;br /&gt;這樣就可以建立有自己程式邏輯的視覺元件在 FlashDevelop 專案內使用&lt;br /&gt;唯一要注意的是元件的命名千萬別搞混&lt;br /&gt;若還有不清楚的地方請詳閱 &lt;a href="http://www.flashdevelop.org/wikidocs/index.php?title=AS3:FlexAndFlashCS3Workflow"&gt;flashdevelop.org 官方文件：AS3:FlexAndFlashCS3Workflow&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-7067752161327741326?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/7067752161327741326/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=7067752161327741326' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7067752161327741326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7067752161327741326'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/10/as3-swc-flashdevelop.html' title='如何使用 AS3 + SWC 在 FlashDevelop 裡進行開發'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-3725043787901890161</id><published>2009-09-23T12:08:00.008+08:00</published><updated>2009-09-30T14:40:44.722+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>ActionScript 3.0 的事件模型</title><content type='html'>(於 200909 整理舊文後重寫)&lt;br /&gt;&lt;br /&gt;Flash 的事件模型中有幾種角色：&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;1. 事件發出者 -- 負責發出事件及傳遞事件實體&lt;/span&gt;&lt;br /&gt;(1) 自定義的類別要成為事件發出者最簡單的方式，就是 extends EventDispatcher。因為事件發出的方法 dispatchEvent，就定義在 EventDispatcher 裡面&lt;br /&gt;(2) 如果此類別已經擴充其它類別，可以改為實作 IEventDispatcher 介面、建立 EventDispatcher 成員，然後撰寫簡單的攔截程序將呼叫遞送到彙總的 EventDispatcher。&lt;br /&gt;(3) 事實上, EventDispatcher 是一個很上層的類別, 所以子系類別很多, 舉凡 SimpleButton, Sprite 等等都是。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;2. 事件實體 -- 事件的常數字串會定義在這邊，實體是被事件發出者產生&lt;/span&gt;&lt;br /&gt;(1) 最簡單最上層的就是 Event 類別，可以繼承他然後自己寫出自定義的事件實體。你可以自定義事件的建構子參數中定義任何你想傳遞給監聽者的資料&lt;br /&gt;(2) 建立自定義事件時，必須覆寫 Event.clone() 方法，才能讓其複製自訂的屬性。否則這些屬性將無法在偵聽程式處理重新傳送的事件時，提供正確的值。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;3. 監聽者 -- 負責接收事件實體並處理事件&lt;/span&gt;&lt;br /&gt;透過事件實體，監聽者可以完全不管事件發出者的屬性跟方法。只要利用 addEventListener(事件類別.事件常數, 事件處理函式) 的方法針對事件去監聽並指派處理函式，來完成事件的處理即可。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;來看看簡單的範例吧&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;事件實體：&lt;/span&gt;&lt;br /&gt;package edlo.events{&lt;br /&gt; //import&lt;br /&gt; import flash.events.Event;&lt;br /&gt; &lt;br /&gt; public class DataInsideEvent extends Event{&lt;br /&gt;  /* =======   Event const   ============================== */&lt;br /&gt;  public static const DATA_INSIDE:String = "dataInside";  //自定義的事件常數&lt;br /&gt;&lt;br /&gt;  /* =======   attributes   =============================== */&lt;br /&gt;  private var _data:Object;&lt;br /&gt;  &lt;br /&gt;  /* ===============================================&lt;br /&gt;   *           constructor&lt;br /&gt;   * =============================================== */&lt;br /&gt;  public function DataInsideEvent(type:String, data:Object=null, bubbles:Boolean = false, cancelable:Boolean = false):void{&lt;br /&gt;   super(type, bubbles, cancelable);&lt;br /&gt;   this._data = data;&lt;br /&gt;  }  &lt;br /&gt;  /* ===============================================&lt;br /&gt;   *           functions&lt;br /&gt;   * =============================================== */&lt;br /&gt;  public override function clone():Event{ &lt;br /&gt;   return new DataInsideEvent(type, this._data, bubbles, cancelable);&lt;br /&gt;  }&lt;br /&gt;  /* ===============================================&lt;br /&gt;   *           Setter &amp; Getter&lt;br /&gt;   * =============================================== */&lt;br /&gt;  public function get data():Object{&lt;br /&gt;   return this._data;&lt;br /&gt;  }&lt;br /&gt; } &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;事件發出者：&lt;/span&gt;&lt;br /&gt;...(略)&lt;br /&gt;//在類別宣告前用後設標籤宣告此類別會發出什麼事件&lt;br /&gt;[Event(name=DataInsideEvent.DATA_INSIDE, type="DataInsideEvent")]&lt;br /&gt;....(略)&lt;br /&gt;//這邊的例子是本身的MouseEvent.CLICK事件觸發後，發出一個自定義的事件給外面&lt;br /&gt;private function onItemClick(e:MouseEvent):void {&lt;br /&gt; dispatchEvent(new DataInsideEvent("dataInside", {itemName: e.currentTarget.name}));&lt;br /&gt;}&lt;br /&gt;...(略)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;事件監聽者：&lt;/span&gt;&lt;br /&gt;...(略)&lt;br /&gt;content.addEventListener(DataInsideEvent.DATA_INSIDE, onMenuItemClick);&lt;br /&gt;...(略)&lt;br /&gt;private function onMenuItemClick(e:DataInsideEvent):void {&lt;br /&gt; trace(DataInsideEvent.data. itemName);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;如果不需傳遞什麼參數的話...可以用 Event 類別作為事件實體....這樣就不必專門寫一個事件實體出來&lt;br /&gt;再偷懶一點的話可以一個類別自己發出事件自己監聽&lt;br /&gt;看情況提供作為參考嚕&lt;br /&gt;&lt;br /&gt;以上&lt;br /&gt;只要可以搞懂 AS 3 事件模型的概念&lt;br /&gt;相信對於整個 ActionScript 的了解程度上面會更進一步&lt;br /&gt;開發時在架構規劃上也是會很有幫助的&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-3725043787901890161?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/3725043787901890161/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=3725043787901890161' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3725043787901890161'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3725043787901890161'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/02/1.html' title='ActionScript 3.0 的事件模型'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-7821615212696041759</id><published>2009-08-20T13:58:00.005+08:00</published><updated>2009-08-20T14:23:12.029+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>在 Flash Builder 裡讓程式碼自動排好的 Flex Formatter</title><content type='html'>用 Flash Develop 寫 AS3 也好一段時間了&lt;br /&gt;但有些時候還是要用 Flex Builder 比較好做事&lt;br /&gt;(且 Flex Framework 裡的 component 比 Flash IDE 裡的要先進多了)&lt;br /&gt;所以最近開始"認真"要學 MXML 還有 Flex Framework 了&lt;br /&gt;(我承認之前對 Flex 都沒有很認真....Orz )&lt;br /&gt;&lt;br /&gt;但是要用 Flex Builder 來開發&lt;br /&gt;首先得先把一些 coding style 給設定一下&lt;br /&gt;這樣用起來才順手&lt;br /&gt;......&lt;br /&gt;.........!!!!(翻桌)&lt;br /&gt;竟然 Flex Builder 3 跟最新的 Flash Builder 裡面都沒有這種設定可以選!!&lt;br /&gt;&lt;br /&gt;還好有人報給我這支外掛&lt;br /&gt;&lt;a href="http://sourceforge.net/projects/flexformatter/"&gt;http://sourceforge.net/projects/flexformatter/&lt;/a&gt;&lt;br /&gt;下載解壓縮後放到 plugin 資料夾內&lt;br /&gt;重開 Builder 之後就可以在 Preference 裏找到 Flex Formatting 的選項&lt;br /&gt;雖然這外掛沒辦法讓 Flex 自己生成的碼一開始就照我們要的方式去排&lt;br /&gt;但是可以藉由"Format Flex Code"按鈕&lt;br /&gt;去針對部分或全部程式碼進行格式化&lt;br /&gt;算是非常實用的功能&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-7821615212696041759?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/7821615212696041759/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=7821615212696041759' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7821615212696041759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7821615212696041759'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/08/flash-develop-as3-flex-builder-flex.html' title='在 Flash Builder 裡讓程式碼自動排好的 Flex Formatter'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-3458786036801996633</id><published>2009-07-21T22:01:00.003+08:00</published><updated>2009-07-21T23:00:10.556+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='設計模式'/><title type='text'>設計模式小筆記-Singleton Pattern</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Singleton Pattern&lt;br /&gt;單例模式&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;使用時機:&lt;br /&gt;希望確保一個類別只能有一個實體時使用。&lt;br /&gt;&lt;br /&gt;懶漢式要點:&lt;br /&gt;1. 類別內宣告一個本身型別的 private static 變數(本例為 theInstance)&lt;br /&gt;2. private 建構子(所以只能由自己 new 實體出來)&lt;br /&gt;3. 建立一個 public static 的 getInstance 方法，如果 theInstance 為空則 new 出一個實體給 theInstance 並 return (若不為空就直接 return theInstance)&lt;br /&gt;4. 用戶端就透過 getInstance 方法獲得該類別實體&lt;br /&gt;&lt;br /&gt;餓漢式要點:(靜態初始化)(目的在解決執行緒安全問題)&lt;br /&gt;1. 類別不可被繼承&lt;br /&gt;2. private static 變數(本例為 theInstance)，宣告時就 new 一個本身型別實體，同時要設成唯讀&lt;br /&gt;3. 其它部分同懶漢式&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Singleton_pattern"&gt;維基百科關於Singleton Pattern的說明(英文)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://zh.wikipedia.org/w/index.php?title=%E5%8D%95%E4%BE%8B%E6%A8%A1%E5%BC%8F&amp;variant=zh-tw"&gt;維基百科關於Singleton Pattern的說明(中文)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-3458786036801996633?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/3458786036801996633/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=3458786036801996633' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3458786036801996633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3458786036801996633'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/07/singleton-pattern.html' title='設計模式小筆記-Singleton Pattern'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-2071164854816597950</id><published>2009-07-18T08:04:00.002+08:00</published><updated>2009-07-18T13:33:38.221+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='設計模式'/><title type='text'>設計模式小筆記-Builder Pattern</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Builder Pattern&lt;br /&gt;建造者模式&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;使用時機:&lt;br /&gt;把一個複雜物件的各部分拆開，使各部分可以有不同的實作方式&lt;br /&gt;&lt;br /&gt;要點:&lt;br /&gt;1. 定義一個 Builder 的 interface，包含每個單一功能(或元件)的抽象方法，然後用一個子類別實作它&lt;br /&gt;2. 定義一個 Director 類別，裡面有一個存放 Builder interface 實體的變數，還有一個方法用來呼叫適當 Builder 子類別裡的方法&lt;br /&gt;(Builder 子類別負責生產零件；Director 類別負責組合零件)&lt;br /&gt;3. 用戶端透過 Director 類別去產生適合的 Builder 子類別，再呼叫 Director 類別裡的方法讓 Builder 子類別負責把各功能(或元件) 產生出來&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Builder_pattern"&gt;維基百科關於Builder Pattern的說明(英文)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Builder_pattern"&gt;維基百科關於Builder Pattern的說明(中文)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-2071164854816597950?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/2071164854816597950/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=2071164854816597950' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2071164854816597950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2071164854816597950'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/07/builder-pattern.html' title='設計模式小筆記-Builder Pattern'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-3460955342544470187</id><published>2009-07-13T14:13:00.002+08:00</published><updated>2009-07-13T15:18:56.414+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='設計模式'/><title type='text'>設計模式小筆記-Facade Pattern</title><content type='html'>&lt;strong&gt;Facade Pattern&lt;br /&gt;外觀模式&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;使用時機:&lt;br /&gt;化繁為簡，建立操作子系統的簡單介面&lt;br /&gt;原有系統難以維護和擴展時&lt;br /&gt;&lt;br /&gt;要點:&lt;br /&gt;1. 建立一個外觀類別，並再其內定義一些操作的方法，以簡化依賴與複雜性&lt;br /&gt;2. 用戶端不需直接操作各類別，只要透過外觀類別提供的方法即可&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Facade_pattern"&gt;維基百科對於 Facade Pattern 的說明(英文)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://zh.wikipedia.org/w/index.php?title=%E5%A4%96%E8%A7%80%E6%A8%A1%E5%BC%8F&amp;variant=zh-tw"&gt;維基百科對於 Facade Pattern 的說明(中文)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-3460955342544470187?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/3460955342544470187/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=3460955342544470187' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3460955342544470187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3460955342544470187'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/07/facade-pattern.html' title='設計模式小筆記-Facade Pattern'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-935941710336829324</id><published>2009-07-13T11:41:00.005+08:00</published><updated>2009-07-13T14:01:52.493+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='設計模式'/><title type='text'>設計模式小筆記-Template Method Pattern</title><content type='html'>&lt;strong&gt;Template Method Pattern&lt;br /&gt;範本方法模式&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;使用時機:&lt;br /&gt;制訂一些規格讓子類別遵守，減少程式碼重複，而子類別可用不同方式去實作方法。&lt;br /&gt;&lt;br /&gt;要點:&lt;br /&gt;1. 定義一個 abstract 父類別，把子類別都要用到的功能定義進去&lt;br /&gt;2. 子類別繼承並實做父類別的方法&lt;br /&gt;3. 用戶端用父類別型別變數存放子類別實體，再呼叫其方法&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Template_method_pattern"&gt;維基百科關於 Template Method Pattern 的說明(英文)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://zh.wikipedia.org/w/index.php?title=%E6%A8%A1%E6%9D%BF%E6%96%B9%E6%B3%95&amp;variant=zh-tw"&gt;維基百科關於 Template Method Pattern 的說明(中文)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-935941710336829324?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/935941710336829324/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=935941710336829324' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/935941710336829324'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/935941710336829324'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/07/template-method-pattern.html' title='設計模式小筆記-Template Method Pattern'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-4515562215257905622</id><published>2009-07-13T10:32:00.004+08:00</published><updated>2009-07-13T11:41:18.042+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='設計模式'/><title type='text'>設計模式小筆記-Prototype Pattern</title><content type='html'>&lt;strong&gt;Prototype Pattern&lt;br /&gt;原型模式&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;使用時機:&lt;br /&gt;有複製物件的功能需求時&lt;br /&gt;&lt;br /&gt;要點:&lt;br /&gt;1. 建立抽象父類別，內有一個 return 此父類別的 clone 方法&lt;br /&gt;2. 子類別實作 clone 方法(在 .NET 裡只要實做 Icloneable 就可以，第一步可省略)&lt;br /&gt;3. 用戶端可呼叫子類別的 clone 方法複製出一個相同的子類別&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Prototype_pattern"&gt;維基百科上關於 Prototype Pattern 的說明(英文)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://zh.wikipedia.org/w/index.php?title=%E5%8E%9F%E5%9E%8B%E6%A8%A1%E5%BC%8F&amp;variant=zh-tw"&gt;維基百科上關於 Prototype Pattern 的說明(中文)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-4515562215257905622?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/4515562215257905622/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=4515562215257905622' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4515562215257905622'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4515562215257905622'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/07/prototype-pattern.html' title='設計模式小筆記-Prototype Pattern'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-6925795057232322807</id><published>2009-07-10T23:50:00.004+08:00</published><updated>2009-07-13T10:39:30.750+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='設計模式'/><title type='text'>設計模式小筆記-Factory Method Pattern</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Factory Method Pattern&lt;br /&gt;工廠方法模式&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;使用時機：&lt;br /&gt;改良簡單工廠模式，缺點為所需建立的類別更多&lt;br /&gt;&lt;br /&gt;要點：&lt;br /&gt;1. 先建立一個工廠的 interface 內有一個可以 return 所需類別的方法&lt;br /&gt;2. 工廠子類別繼承自 interface，實作的方法可以 return 適當的類別&lt;br /&gt;3. 這些被 return 的類別也要一一建立，並且都有一個同名的操作方法供呼叫&lt;br /&gt;4. 用戶端用工廠的 interface 為變數型態，先 new 出適當的工廠子類別，再呼叫其內的方法 return 回適當的操作類別&lt;br /&gt;5.該操作類別就可呼叫其內的方法，以後修改時在用戶端只需修改 new 出適當的工廠子類別的地方即可&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Factory_method_pattern"&gt;維基百科對於 Factory Method Pattern 的描述(英文)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://zh.wikipedia.org/w/index.php?title=%E5%B7%A5%E5%8E%82%E6%96%B9%E6%B3%95&amp;variant=zh-tw"&gt;維基百科對於 Factory Method Pattern 的描述(中文)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-6925795057232322807?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/6925795057232322807/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=6925795057232322807' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/6925795057232322807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/6925795057232322807'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/07/factory-method-pattern.html' title='設計模式小筆記-Factory Method Pattern'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-4800324897463912197</id><published>2009-07-10T17:15:00.004+08:00</published><updated>2009-07-13T10:31:46.466+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='設計模式'/><title type='text'>設計模式小筆記-Proxy Pattern</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Proxy Pattern&lt;br /&gt;代理模式&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;使用時機：&lt;br /&gt;需求物件跟執行物件可以無任何關連，用代理者物件做為中介&lt;br /&gt;&lt;br /&gt;要點：&lt;br /&gt;1. 代理者與被代理者都實作同一個介面(具有相同方法)&lt;br /&gt;2. 代理者裡有一個變數存放被代理者，代理者所實作的方法都是透過這個變數去執行被代理者所實作的方法&lt;br /&gt;3. 用戶端只需要對代理者進行操作即可&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Proxy_pattern"&gt;維基百科對於Proxy Pattern的說明&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-4800324897463912197?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/4800324897463912197/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=4800324897463912197' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4800324897463912197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4800324897463912197'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/07/proxy-pattern.html' title='設計模式小筆記-Proxy Pattern'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-7297199099057971680</id><published>2009-07-09T01:54:00.004+08:00</published><updated>2009-07-13T10:31:46.467+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='設計模式'/><title type='text'>設計模式小筆記-Decorator Pattern</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Decorator Pattern&lt;br /&gt;修飾模式&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;使用時機：&lt;br /&gt;希望可以在執行期間把一些功能選擇性地加入物件裡&lt;br /&gt;&lt;br /&gt;要點：&lt;br /&gt;1. 定義一個 interface，包含一個用來操作功能的方法(本例取名為 component)&lt;br /&gt;2. 實作上述 interface，撰寫具體物件類別(將來把功能加在它身上，本例為 ConcreteComp)與 Decorator 類別，在 Decorator 類別有一個型別為 component 的變數，並有一個方法來設定它(本例為setComp方法)&lt;br /&gt;3. 可選擇性加入的功能都繼承 Decorator 類別而建立&lt;br /&gt;4. 用戶端，new 一個 ConcreteComp 及欲加入的的功能實體，第一個功能實體 setComp 將ConcreteComp 指派給自己，第二個功能實體 setComp 將 第一個功能實體 指派給自己，以此類推(所以這些功能具有順序性，為物件鏈)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://zh.wikipedia.org/w/index.php?title=修饰模式&amp;variant=zh-tw#.E4.BB.8B.E7.BB.8D"&gt;維基百科關於修飾模式的說明與範例&lt;/a&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Decorator_pattern"&gt;維基百科關於修飾模式的說明與範例(英文)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-7297199099057971680?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/7297199099057971680/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=7297199099057971680' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7297199099057971680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7297199099057971680'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/07/decorator-pattern.html' title='設計模式小筆記-Decorator Pattern'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-534787781497478513</id><published>2009-07-07T23:59:00.005+08:00</published><updated>2009-07-13T10:31:46.467+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='設計模式'/><title type='text'>設計模式小筆記-Strategy Pattern</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Strategy Pattern (Policy Pattern)&lt;br /&gt;策略模式&lt;/span&gt;&lt;br /&gt;使用時機：&lt;br /&gt;同一個動作可能有不同演算法，而且可能隨時 (或頻繁) 更動&lt;br /&gt;&lt;br /&gt;要點：&lt;br /&gt;1. 建立介面，並建立多個子類別去實做介面內的同一個方法&lt;br /&gt;2. 建立一個 Context 類別，建構時把合適的子類別存進一個型別為父類別的變數裡，並撰寫一個 public 方法負責呼叫該父類別變數的演算法方法(也可與 Simple Factory Pattern 結合，把 Factory 類別判斷合適的子類別為何的邏輯放進 Context 類別的建構子裡)&lt;br /&gt;3. 用戶端程式只要傳進合適的參數去 new 出 Context 類別，就可以使用 Context 類別內的 public 方法達到呼叫不同的演算法的目的。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://en.wikipedia.org/wiki/Strategy_pattern"&gt;維基百科上的說明與範例&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;比較 Simple Factory Pattern 與 Strategy Pattern：&lt;br /&gt;1. 簡單工廠模式解決的是物件建立的問題，策略模式的重點則在用一個方式調用一系列演算法，使演算法的變動不會影響到用戶端&lt;br /&gt;2. 對用戶端來說，使用簡單工廠模式必須 import 父類別跟 Factory 類別；但使用策略模式時只需 import 一個 Context 類別就行，耦合度降低&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-534787781497478513?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/534787781497478513/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=534787781497478513' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/534787781497478513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/534787781497478513'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/07/strategy-pattern.html' title='設計模式小筆記-Strategy Pattern'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-7308364358270347677</id><published>2009-07-07T22:51:00.012+08:00</published><updated>2009-07-13T10:31:46.468+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='設計模式'/><title type='text'>設計模式小筆記-Simple Factory Pattern</title><content type='html'>&lt;span style="font-weight:bold;"&gt;Simple Factory Pattern (Static Factory  Pattern)&lt;br /&gt;簡單工廠模式&lt;/span&gt;&lt;br /&gt;使用時機：&lt;br /&gt;同一個動作可能有不同運算方式(或邏輯)時&lt;br /&gt;&lt;br /&gt;要點：&lt;br /&gt;1. 子類別擁有相同名稱的方法(先定義一個父類別，再建立多個子類別去 override 父類別內的同一個方法)&lt;br /&gt;2. 由 Factory 類別裡的一個 static 方法(依據傳入的參數)去負責判斷並 new 出適合的子類別，回傳&lt;br /&gt;3. 用戶端以一個父類別變數呼叫 Factory 類別裡的那個 static 方法，即可得到適合的子類別(雖回傳為父類別，由於方法是 override，故可使用子類別的方法)&lt;br /&gt;4. 子類別可依狀況做增加或維護，但記得要一併修改 Factory 類別裡的 static 方法，使其能正確 new 出需要的子類別&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-7308364358270347677?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/7308364358270347677/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=7308364358270347677' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7308364358270347677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7308364358270347677'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/07/simple-factory-pattern.html' title='設計模式小筆記-Simple Factory Pattern'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-4878358280900999804</id><published>2009-06-11T11:40:00.006+08:00</published><updated>2009-08-21T22:22:05.050+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='工具'/><title type='text'>Flash IDE 匯出 SWC 供專案使用</title><content type='html'>現在 Edward 都是用 Flash Develop 來寫 Actionscript 的 code 了&lt;br /&gt;不過一些牽涉到視覺的元件還是必須透過 Flash IDE 來做發佈&lt;br /&gt;且命名上面也是一個問題&lt;br /&gt;這樣實在是很鳥&lt;br /&gt;雖然知道這要用匯出 SWC 的方式來解決&lt;br /&gt;可是一直沒有用過&lt;br /&gt;剛好今天逛網路看到了關於這方面的分享&lt;br /&gt;趕快記錄下來&lt;br /&gt;&lt;br /&gt;其實方法很簡單:&lt;br /&gt;1. 在 Flash IDE 裡開一個檔案, 把要匯出的元件作好放在裡面&lt;br /&gt;2. 元件設定好類別連結(建議可用 package 做個分類)&lt;br /&gt;3. 發布設定中要勾選 "匯出SWC", 並把產生的 SWC 檔放在專案路徑下(建議是 libs 資料夾)&lt;br /&gt;4. 進 Flash Develop 將該 SWC 右鍵點選 "Add To Library", 就可以 import 在 SWC 裡面的類別了&lt;br /&gt;(或是在專案屬性的 SWC Libraries 裡填上 SWC 檔名及路徑)&lt;br /&gt;&lt;br /&gt;Flex Builder 的作法也差不多&lt;br /&gt;在Project -&gt; Properties-&gt; ActionScript Build Path -&gt; Library Path -&gt; Add SWC&lt;br /&gt;輸入 SWC 檔名及路徑即可( libs 資料夾內的會自己抓, 不用另外設)&lt;br /&gt;&lt;br /&gt;不過 Flex Builder 不可以直接在 MXML 加進 SWC 裡的物件&lt;br /&gt;這要怎麼辦呢!!??&lt;br /&gt;在 CS3 有一個 Flex Component Kit for Flash CS3 的 Extension&lt;br /&gt;安裝後在"命令"選單裡會多出 Make Flex Component 選項&lt;br /&gt;點選後再匯出就可以了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-4878358280900999804?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/4878358280900999804/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=4878358280900999804' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4878358280900999804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4878358280900999804'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/06/flash-ide-swc.html' title='Flash IDE 匯出 SWC 供專案使用'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-5427326924844438310</id><published>2009-06-09T14:14:00.001+08:00</published><updated>2009-06-09T14:17:08.274+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='通用'/><title type='text'>印刷尺寸</title><content type='html'>一、開數&lt;br /&gt;&lt;table border='1' bordercolor='#cccccc' cellpadding='1' cellspacing='0'&gt;&lt;tbody&gt;&lt;tr style='text-align:center;background-color:#FF6600;'&gt;&lt;td&gt;尺寸單位&lt;/td&gt;&lt;td&gt;公釐 mm&lt;/td&gt;&lt;td&gt;英吋 in&lt;/td&gt;&lt;td&gt;換算才數&lt;/td&gt;&lt;/tr&gt;&lt;tr style='text-align:center;'&gt;&lt;td&gt;全  紙&amp;nbsp;&lt;/td&gt;&lt;td&gt;1040x760&lt;/td&gt;&lt;td&gt;40.94x29.92&lt;/td&gt;&lt;td&gt;8.78&lt;/td&gt;&lt;/tr&gt;&lt;tr style='text-align:center;'&gt;&lt;td&gt;對 開&lt;/td&gt;&lt;td&gt;760x520&lt;/td&gt;&lt;td&gt;29.92x20.47&lt;/td&gt;&lt;td&gt;4.39&lt;/td&gt;&lt;/tr&gt;&lt;tr style='text-align:center;'&gt;&lt;td&gt;3 開&lt;/td&gt;&lt;td&gt;760x345&lt;/td&gt;&lt;td&gt;29.92x13.58&lt;/td&gt;&lt;td&gt;2.91&lt;/td&gt;&lt;/tr&gt;&lt;tr style='text-align:center;'&gt;&lt;td&gt;4 開&lt;/td&gt;&lt;td&gt;520x375&lt;/td&gt;&lt;td&gt;20.47x14.76&lt;/td&gt;&lt;td&gt;2.17&lt;/td&gt;&lt;/tr&gt;&lt;tr style='text-align:center;'&gt;&lt;td&gt;8 開&lt;/td&gt;&lt;td&gt;375x260&lt;/td&gt;&lt;td&gt;14.76x10.24&lt;/td&gt;&lt;td&gt;1.08&lt;/td&gt;&lt;/tr&gt;&lt;tr style='text-align:center;'&gt;&lt;td&gt;16 開&lt;/td&gt;&lt;td&gt;260x185&lt;/td&gt;&lt;td&gt;10.24x7.28&lt;/td&gt;&lt;td&gt;0.53&lt;/td&gt;&lt;/tr&gt;&lt;tr style='text-align:center;'&gt;&lt;td&gt;32 開&lt;/td&gt;&lt;td&gt;185x128&lt;/td&gt;&lt;td&gt;7.28x5.04&lt;/td&gt;&lt;td&gt;0.26&lt;/td&gt;&lt;/tr&gt;&lt;tr style='text-align:center;'&gt;&lt;td&gt;64 開&lt;/td&gt;&lt;td&gt;128x90&lt;/td&gt;&lt;td&gt;5.04x3.54&lt;/td&gt;&lt;td&gt;0.13&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;二、菊數&lt;br /&gt;&lt;table border='1' bordercolor='#cccccc' cellpadding='1' cellspacing='0'&gt;&lt;tbody&gt;&lt;tr style='text-align:center;background-color:#FF6600;'&gt;&lt;td&gt;尺寸單位&lt;/td&gt;&lt;td&gt;公釐 mm&lt;/td&gt;&lt;td&gt;英吋 in&lt;/td&gt;&lt;td&gt;換算才數&lt;/td&gt;&lt;/tr&gt;&lt;tr style='text-align:center;'&gt;&lt;td&gt;菊 全&lt;/td&gt;&lt;td&gt;610x860&lt;/td&gt;&lt;td&gt;24.02x33.86&lt;/td&gt;&lt;td&gt;5.83&lt;/td&gt;&lt;/tr&gt;&lt;tr style='text-align:center;'&gt;&lt;td&gt;菊 對&lt;/td&gt;&lt;td&gt;420x610&lt;/td&gt;&lt;td&gt;16.54x24.02&lt;/td&gt;&lt;td&gt;2.85&lt;/td&gt;&lt;/tr&gt;&lt;tr style='text-align:center;'&gt;&lt;td&gt;菊 3K&lt;/td&gt;&lt;td&gt;280x610&lt;/td&gt;&lt;td&gt;11.02x24.02&lt;/td&gt;&lt;td&gt;1.90&lt;/td&gt;&lt;/tr&gt;&lt;tr style='text-align:center;'&gt;&lt;td&gt;菊 4K&lt;/td&gt;&lt;td&gt;395x420&lt;/td&gt;&lt;td&gt;15.55x16.54&lt;/td&gt;&lt;td&gt;1.84&lt;/td&gt;&lt;/tr&gt;&lt;tr style='text-align:center;'&gt;&lt;td&gt;菊 8K&lt;/td&gt;&lt;td&gt;210x295&lt;/td&gt;&lt;td&gt;8.27x11.61&lt;/td&gt;&lt;td&gt;0.69&lt;/td&gt;&lt;/tr&gt;&lt;tr style='text-align:center;'&gt;&lt;td&gt;菊 16K&lt;/td&gt;&lt;td&gt;148x205&lt;/td&gt;&lt;td&gt;5.83x8.07&lt;/td&gt;&lt;td&gt;0.34&lt;/td&gt;&lt;/tr&gt;&lt;tr style='text-align:center;'&gt;&lt;td&gt;菊 32K&lt;/td&gt;&lt;td&gt;102x148&lt;/td&gt;&lt;td&gt;4.02x5.83&lt;/td&gt;&lt;td&gt;0.17&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;三、AB數&lt;br /&gt;&lt;table border='1' cellpadding='1' cellspacing='0'&gt;&lt;tbody&gt;&lt;tr style='text-align:center;background-color:#FF6600;'&gt;&lt;td&gt;尺寸單位&lt;/td&gt;&lt;td&gt;公釐mm&lt;/td&gt;&lt;td&gt;英吋 in&lt;/td&gt;&lt;td&gt;換算才數&lt;/td&gt;&lt;/tr&gt;&lt;tr style='text-align:center;'&gt;&lt;td&gt;A0&lt;/td&gt;&lt;td&gt;840x1200&lt;/td&gt;&lt;td&gt;33.07x46.77&lt;/td&gt;&lt;td&gt;11.09&lt;/td&gt;&lt;/tr&gt;&lt;tr style='text-align:center;'&gt;&lt;td&gt;A1&lt;/td&gt;&lt;td&gt;594x840&lt;/td&gt;&lt;td&gt;23.39x33.07&lt;/td&gt;&lt;td&gt;5.54&lt;/td&gt;&lt;/tr&gt;&lt;tr style='text-align:center;'&gt;&lt;td&gt;A2&lt;/td&gt;&lt;td&gt;420x594&lt;/td&gt;&lt;td&gt;16.54x23.39&lt;/td&gt;&lt;td&gt;2.77&lt;/td&gt;&lt;/tr&gt;&lt;tr style='text-align:center;'&gt;&lt;td&gt;A3&lt;/td&gt;&lt;td&gt;297x420&lt;/td&gt;&lt;td&gt;11.69x16.54&lt;/td&gt;&lt;td&gt;1.39&lt;/td&gt;&lt;/tr&gt;&lt;tr style='text-align:center;'&gt;&lt;td&gt;A4&lt;/td&gt;&lt;td&gt;210x297&lt;/td&gt;&lt;td&gt;8.27x11.69&lt;/td&gt;&lt;td&gt;0.69&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-5427326924844438310?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/5427326924844438310/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=5427326924844438310' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/5427326924844438310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/5427326924844438310'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/06/blog-post.html' title='印刷尺寸'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-5738996177170288918</id><published>2009-06-06T14:03:00.005+08:00</published><updated>2009-06-06T16:13:17.918+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>關於 Actionscript 的後設標籤(Metadata Tags)</title><content type='html'>使用 Flex SDK 編譯時&lt;br /&gt;可以在類別宣告外加上後設標籤(Metadata Tag)&lt;br /&gt;基本上就是給編譯器看的一些設定&lt;br /&gt;&lt;br /&gt;根據 &lt;a href="http://livedocs.adobe.com/flex/3/html/help.html?content=metadata_3.html"&gt;Adobe 在 Flex3 的 Live Doc 裡面所描述&lt;/a&gt;, 可以在 ActionScript 類別檔使用下面的 Metadata Tags:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;[ArrayElementType("elementType")]&lt;/strong&gt;&lt;br /&gt;// 幫 Array 的 Element 宣告型別&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;[Bindable(event="eventname")]&lt;/strong&gt;&lt;br /&gt;//若省略eventname則為"propertyChange"&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;[DefaultProperty("propertyName")]&lt;/strong&gt;&lt;br /&gt;//為 component 指定預設值, 詳見&lt;a href="http://livedocs.adobe.com/flex/3/html/help.html?content=metadata_3.html#162732"&gt;Adding properties and methods to a component&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;[Deprecated]&lt;/strong&gt;&lt;br /&gt;//"不建議使用"的宣告&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;[Effect(name="eventNameEffect", event="eventName")]&lt;/strong&gt;&lt;br /&gt;//效果設定&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;[Embed(source="filename",mimeType="mimeTypeString")]&lt;/strong&gt;&lt;br /&gt;//在編譯時內嵌指定的檔案(&lt;a href="http://livedocs.adobe.com/flex/3/html/help.html?content=metadata_3.html"&gt;檔案格式與MimeType可參考這裡&lt;/a&gt;)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;[Event(name="eventName", type="package.eventType")]&lt;/strong&gt;&lt;br /&gt;//事件設定&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;[Exclude(name="label", kind="property")] &lt;/strong&gt;&lt;br /&gt;//Flex Builder tag inspector 省略檢查該屬性&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;[ExcludeClass]&lt;/strong&gt;&lt;br /&gt;//Flex Builder tag inspector 省略檢查該類別&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;[IconFile("fileName")]&lt;/strong&gt;&lt;br /&gt;//幫 component 指定 IconFile&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;[Inspectable(attribute=value[,attribute=value,...])]&lt;/strong&gt;&lt;br /&gt;//與code hints 還有屬性檢查有關&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;[InstanceType("package.className")]&lt;/strong&gt;&lt;br /&gt;//IDeferredInstance 類型的物件設定data type&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;[NonCommittingChangeEvent("event_name")]&lt;/strong&gt;&lt;br /&gt;//在設定的Event發生時不要進行檢查&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;[RemoteClass]&lt;/strong&gt;&lt;br /&gt;//使用Action Message Format(AMF)時讓 Flex Builder 先保留(不指定)類別資訊&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;[Style(name="style_name"[,property="value",...])]&lt;/strong&gt;&lt;br /&gt;//自訂Style屬性資料&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;[Transient]&lt;/strong&gt;&lt;br /&gt;//當使用[RemoteClass] 將 AS Object 給 mapping 為 Java object 時, 加了此設定的屬性在送到 server 時會被忽略&lt;br /&gt;-------------------------------&lt;br /&gt;doc上沒寫的:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;[SWF]&lt;/strong&gt;&lt;br /&gt;//例:[SWF(frameRate="30", width="1024", height="576", backgroundColor="#000000", pageTitle="Edward Design")]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;目前我比較常用到 [SWF] 跟 [Event] 這兩個&lt;br /&gt;其它的以後有機會再慢慢試嚕&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-5738996177170288918?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/5738996177170288918/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=5738996177170288918' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/5738996177170288918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/5738996177170288918'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/06/actionscript-metadata-tags.html' title='關於 Actionscript 的後設標籤(Metadata Tags)'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-3650472613799588981</id><published>2009-05-18T15:53:00.001+08:00</published><updated>2009-05-18T15:54:21.349+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS與Html'/><title type='text'>瀏覽器不支援 height: 100% 問題</title><content type='html'>用 flash 做了一個全版面的網站&lt;br /&gt;但在新版瀏覽器上面卻顯示不正常&lt;br /&gt;這問題起因於在標準規格中不建議將高度設為100%&lt;br /&gt;有沒有解決的方式呢?&lt;br /&gt;一定有&lt;br /&gt;&lt;br /&gt;今天試了幾種不同的方式&lt;br /&gt;最後取消了 Dreamweaver 在 HTML 檔案第一行所寫的&amp;lt;!DOCTYPE;&amp;gt;宣告&lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt;&lt;br /&gt;問題解決了&lt;br /&gt;&lt;br /&gt;不過客戶還是希望把&lt;!DOCTYPE&gt;宣告加回去&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;gt;&lt;br /&gt;這樣寫是 OK 的&lt;br /&gt;&lt;br /&gt;XHTML 1.0 跟 HTML 4.01 之間到底規格差別如何呢??&lt;br /&gt;加了&amp;lt;!DOCTYPE;&amp;gt;宣告跟沒有加&amp;lt;!DOCTYPE;&amp;gt;宣告的差別又真的很重要嗎??&lt;br /&gt;查了一下&lt;a href="http://zh.wikipedia.org/w/index.php?title=XHTML&amp;variant=zh-tw"&gt;維基百科裡關於 XHTML 的說明&lt;/a&gt;以及&lt;a href="http://zh.wikipedia.org/w/index.php?title=HTML&amp;variant=zh-tw"&gt;關於 HTML 的說明&lt;/a&gt;&lt;br /&gt;並沒有發現有相關的解釋&lt;br /&gt;&lt;br /&gt;至於在 XHTML 1.0 下面實現 100% 高度的方法&lt;br /&gt;在論壇上面求教高手後得到了解答&lt;br /&gt;趕快記錄下來&lt;br /&gt;&lt;br /&gt;CSS:&lt;br /&gt;&lt;strong&gt;html, body, #fullContainer {&lt;br /&gt;  margin: 0;&lt;br /&gt;  padding: 0;&lt;br /&gt;  height:100%;&lt;br /&gt;  border: none;&lt;br /&gt;  text-align: center;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#fullContainer {&lt;br /&gt;  width:100%&lt;br /&gt;  text-align: left;&lt;br /&gt;  vertical-align: middle;&lt;br /&gt;}&lt;/strong&gt;&lt;br /&gt;---------------------------------&lt;br /&gt;HTML:&lt;br /&gt;&lt;strong&gt;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;lt;div id=&amp;quot;fullContainer&amp;quot;&amp;gt;&lt;br /&gt;This is centered&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;此程式碼是修改自 &lt;a href="http://apptools.com/examples/tableheight.php"&gt;http://apptools.com/examples/tableheight.php&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;這樣可以在網頁中製造一個 100% 滿版且置中的效果&lt;br /&gt;table tag 可以換成 div tag&lt;br /&gt;但是 vertical-align: middle; 會失效&lt;br /&gt;所以還是使用 table 比較完美&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-3650472613799588981?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/3650472613799588981/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=3650472613799588981' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3650472613799588981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3650472613799588981'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/05/height-100.html' title='瀏覽器不支援 height: 100% 問題'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-7559557231906828800</id><published>2009-05-06T10:06:00.003+08:00</published><updated>2009-05-06T10:35:52.016+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>for .. in 跟 for each.. in 迴圈</title><content type='html'>本文技術等級: 低&lt;br /&gt;&lt;br /&gt;這兩個迴圈雖然會用到, 但每次要用的時候都給它小忘記&lt;br /&gt;還是在這邊做個筆記好了&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;for .. in 迴圈&lt;/strong&gt;&lt;br /&gt;說明: 在我之前寫過的 flashvars 文章中就有用過了, 此迴圈會取出物件的所有屬性&lt;br /&gt;例:(把 flashvars 的 code 拿來貼...)&lt;br /&gt;var flashvars:Object = stage.loaderInfo.parameters;&lt;br /&gt;var vars:Object = [];&lt;br /&gt;var k:String;&lt;br /&gt;for(k in flashvars){&lt;br /&gt;vars.push({key:k, value:flashvars[k]});&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;for each .. in 迴圈&lt;/strong&gt;&lt;br /&gt;說明:此迴圈會取出物件的所有屬性值, 由於知道了屬性名稱後當然可以取出其值, 所以 for each .. in 跟 for .. in 事實上是很相似的, 不過特點在於它可以用 E4X 來操作 XML 檔案, 這一點就很棒, 引述官方的說法於下: "for each..in 陳述式是新的 E4X 語言擴充功能，不只可針對 XML 物件使用，也可針對其它物件與陣列使用..."&lt;br /&gt;例:&lt;br /&gt;for each(var element:XML in myXML.elements()) {&lt;br /&gt;//將 XMLList 物件 myXML 裡的每一個 element 取出&lt;br /&gt;......&lt;br /&gt;}&lt;br /&gt;也可以將上例的 XMLList 物件換成取出 XML 物件內的資料, 只是在 in 後面接的也要改成 XML的第一個子節點&lt;br /&gt;&lt;br /&gt;這樣應該清楚了&lt;br /&gt;要是再忘記就在上來偷看一下吧^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-7559557231906828800?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/7559557231906828800/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=7559557231906828800' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7559557231906828800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7559557231906828800'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/05/for-in-for-each-in.html' title='for .. in 跟 for each.. in 迴圈'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-3937257803990070587</id><published>2009-05-06T09:52:00.000+08:00</published><updated>2009-05-06T09:52:26.171+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS與Html'/><title type='text'>IE6 hack</title><content type='html'>針對舊版瀏覽器 IE6 在 CSS 上會出現較不同的視覺呈現&lt;br /&gt;克服的方式有以下幾種&lt;br /&gt;&lt;br /&gt;1.&lt;br /&gt;&lt;strong&gt;*html &lt;/strong&gt;Selector &lt;strong&gt;{....}&lt;/strong&gt;&lt;br /&gt;例:&lt;br /&gt;#myDiv {padding:10px;}&lt;br /&gt;* html #myDiv {padding:0;} /*IE6 Hack*/&lt;br /&gt;&lt;br /&gt;2.&lt;br /&gt;_屬性名稱&lt;br /&gt;例:&lt;br /&gt;padding-top:10px;&lt;br /&gt;_padding-top:0; /*IE6 Hack*/&lt;br /&gt;&lt;br /&gt;3.&lt;br /&gt;!important 設定&lt;br /&gt;margin: 0 0 0 24px !important; /*IE不支援!important所以略過此行*/&lt;br /&gt;&lt;br /&gt;身為網頁設計師&lt;br /&gt;對於各家瀏覽器不同的呈現當然要盡量要求能沒有差別是最理想&lt;br /&gt;這才是專業的地方&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-3937257803990070587?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/3937257803990070587/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=3937257803990070587' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3937257803990070587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3937257803990070587'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/04/ie6-hack.html' title='IE6 hack'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-289075871445050433</id><published>2009-04-17T10:25:00.005+08:00</published><updated>2009-04-17T13:32:11.932+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>MOUSE_OVER 跟 ROLL_OVER</title><content type='html'>這一點相信是一定會讓初學者困擾的問題&lt;br /&gt;在 Flash 的 MouseEvent 裡面有兩組很相似的事件&lt;br /&gt;就是 MOUSE_OVER, MOUSE_OUT 跟 ROLL_OVER, ROLL_OUT&lt;br /&gt;長期以來我也一直不是很清楚&lt;br /&gt;&lt;br /&gt;之前有人說分別在於 MOUSE_OVER 這組會一直觸發, 而 ROLL_OVER 這組只會觸發一次&lt;br /&gt;這樣說其實是不對的&lt;br /&gt;&lt;br /&gt;在網路上搜尋了一下&lt;br /&gt;很快的找到結論&lt;br /&gt;趕快記下來免得以後又搞混&lt;br /&gt;&lt;br /&gt;真正的差別在於&lt;br /&gt;MOUSE_OVER 與 MOUSE_OUT 在事件的傳遞上面會 bubbling 上去&lt;br /&gt;也就是偵聽該事件的實體若還有 child 實體存在&lt;br /&gt;則 child 實體也會觸發該事件&lt;br /&gt;也就是說在事件偵聽函式中得到的 target 屬性(觸發者)未必會是偵聽該事件的實體&lt;br /&gt;而有可能會是它的 child&lt;br /&gt;(但 currentTarget 會是偵聽該事件的實體)&lt;br /&gt;&lt;br /&gt;而 ROLL_OVER 跟 ROLL_OUT 則比較特殊&lt;br /&gt;只有偵聽該事件的實體會觸發&lt;br /&gt;其 child 實體不會多觸發一次事件&lt;br /&gt;如果 child 實體也註冊了 ROLL_OVER 跟 ROLL_OUT 事件&lt;br /&gt;則事件實體會有兩個&lt;br /&gt;(相同的狀況在 MOUSE_OVER 與 MOUSE_OUT 這一組則會是只有一個事件實體, 但在 bubbling 階段廣播到不同實體)&lt;br /&gt;&lt;br /&gt;以往概念不清楚時我常常用麻煩的方法&lt;br /&gt;叫物件實體去偵聽 MOUSE_OVER 與 MOUSE_OUT&lt;br /&gt;卻又不希望child 實體來干擾&lt;br /&gt;所以會去停用物件實體的 mouseChildren 屬性&lt;br /&gt;並使用事件的 currentTarget 屬性&lt;br /&gt;觀念清楚後發覺自己怎麼這麼笨....&lt;br /&gt;遇上這種狀況只要偵聽 ROLL_OVER 跟 ROLL_OUT 就好了阿&lt;br /&gt;不過 MOUSE_OVER 與 MOUSE_OUT 也還是有它適合的狀況歐&lt;br /&gt;要視不同狀況善加利用內建的事件才是最好的^^&lt;br /&gt;&lt;br /&gt;參考網站:(他做了範例, 概念馬上就很清楚)&lt;br /&gt;&lt;a href="http://www.zedia.net/2008/difference-between-mouseeventroll_over-and-mouseeventmouse_over-in-as3/"&gt;http://www.zedia.net/2008/difference-between-mouseeventroll_over-and-mouseeventmouse_over-in-as3/&lt;/a&gt;&lt;br /&gt;另外在 Ticore 的網站也很久之前就討論過&lt;br /&gt;&lt;a href="http://ticore.blogspot.com/2007/08/as3-mouseover-rollover-2.html"&gt;http://ticore.blogspot.com/2007/08/as3-mouseover-rollover-2.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-289075871445050433?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/289075871445050433/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=289075871445050433' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/289075871445050433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/289075871445050433'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/04/mouseover-rollover.html' title='MOUSE_OVER 跟 ROLL_OVER'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-8661090349672754471</id><published>2009-04-01T18:29:00.003+08:00</published><updated>2009-04-01T18:45:35.741+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>檔案下載(跳下載視窗而不由瀏覽器開啟)</title><content type='html'>本文技術等級:低&lt;br /&gt;&lt;br /&gt;有時候我們會想要讓使用者在點了某個按鈕之後可以下載檔案&lt;br /&gt;但如果只是設該檔案的連結位置&lt;br /&gt;那麼像是圖檔或是PDF檔案等&lt;br /&gt;這些瀏覽器有支援顯示的格式&lt;br /&gt;就會變成用瀏覽器開啟而不是跳出下載視窗了&lt;br /&gt;&lt;br /&gt;有沒有辦法解決呢&lt;br /&gt;怎麼可能沒有....&lt;br /&gt;要用到 Actionscript 裡面負責檔案上/下載的類別 FileReference&lt;br /&gt;&lt;br /&gt;簡單 code 如下:&lt;br /&gt;&lt;br /&gt;import flash.net.FileReference;&lt;br /&gt;&lt;br /&gt;var req:URLRequest;&lt;br /&gt;var fileName:String = "SomeFile.pdf";&lt;br /&gt;var file:FileReference;&lt;br /&gt;&lt;br /&gt;req = new URLRequest();&lt;br /&gt;req.url = "http://www.xxx.com/ffffff.pdf";//注意這邊一定要是 http 協定&lt;br /&gt;file = new FileReference();&lt;br /&gt;file.download(req, fileName);//第二個參數fileName是下載視窗中預設的檔案名稱&lt;br /&gt;&lt;br /&gt;至於事件的監聽&lt;br /&gt;FileReference 會發出以下事件&lt;br /&gt;Event.CANCEL&lt;br /&gt;Event.COMPLETE&lt;br /&gt;IOErrorEvent.IO_ERROR&lt;br /&gt;Event.OPEN&lt;br /&gt;ProgressEvent.PROGRESS&lt;br /&gt;SecurityErrorEvent.SECURITY_ERROR&lt;br /&gt;Event.SELECT&lt;br /&gt;&lt;br /&gt;先簡單寫到這裡&lt;br /&gt;有想到再補充吧&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-8661090349672754471?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/8661090349672754471/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=8661090349672754471' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/8661090349672754471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/8661090349672754471'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/04/blog-post.html' title='檔案下載(跳下載視窗而不由瀏覽器開啟)'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-1977792996480414614</id><published>2009-03-19T13:22:00.007+08:00</published><updated>2009-03-20T10:39:52.343+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>將 Array 裡的物件依照自訂規則做排序</title><content type='html'>這是今天遇上的一個小問題&lt;br /&gt;還好查過 doc 之後豁然開朗&lt;br /&gt;趕快記錄在這邊&lt;br /&gt;&lt;br /&gt;故事是這樣的&lt;br /&gt;我用了一個 Array 存放了一些 MovieClip&lt;br /&gt;並希望他們在做某個動作之前先照他們的 y 軸數值做排序&lt;br /&gt;一開始我用的是 Array 的 sortOn 方法&lt;br /&gt;如下:&lt;br /&gt;myArr.sortOn(y, Array.NUMERIC);&lt;br /&gt;但結果並不如預期是照 y 的數值去排列&lt;br /&gt;(很奇怪..不知出問題的原因為何...)&lt;br /&gt;&lt;br /&gt;原本打算自己寫個 Function 來解決&lt;br /&gt;但後來又仔細查了 doc&lt;br /&gt;發現 sort 方法有一個參數&lt;br /&gt;可以指定某個自訂 Function 讓 sort 方法依此來做排序&lt;br /&gt;簡單 code 如下:&lt;br /&gt;&lt;br /&gt;/*將 Array 裡的物件照自訂規則排序&lt;br /&gt;* 此 Function 要傳入兩個參數並回傳 Number */&lt;br /&gt;myArr.sort(sortOnMyRule);&lt;br /&gt;&lt;br /&gt;/*自訂的排序 Function */&lt;br /&gt;private function sortOnMyRule(a:DisplayObject, b:DisplayObject):Number {&lt;br /&gt; if (a.y &gt; b.y) return 1; //將 a 排在 b 的前面&lt;br /&gt; else if (a.y &lt; b.y) return -1; //將 a 排在 b 的後面&lt;br /&gt; else return 0; //排序優先順序相同&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;這樣 Array 就會依照傳回的值把裡面的物件排序完成, 太棒了!&lt;br /&gt;以後要更專心看 doc 才行....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-1977792996480414614?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/1977792996480414614/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=1977792996480414614' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1977792996480414614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1977792996480414614'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/03/array.html' title='將 Array 裡的物件依照自訂規則做排序'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-8888538174932930208</id><published>2009-03-18T09:42:00.000+08:00</published><updated>2009-03-18T09:42:02.810+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>矩陣迴旋濾鏡-ConvolutionFilter</title><content type='html'>flash.filters.ConvolutionFilter 將輸入影像內的像素和鄰近的像素結合產生影像。達到包含模糊、邊緣偵測、銳利、浮雕和斜角各種效果。&lt;br /&gt;&lt;br /&gt;適用物件, 套用方式與尺寸限制: 與 ColorMatrixFilter 同&lt;br /&gt;&lt;br /&gt;屬性:&lt;br /&gt;&lt;strong&gt;matrix : Array&lt;/strong&gt; &lt;br /&gt;//用於矩陣變化的值陣列。必須等於 matrixX * matrixY&lt;br /&gt;//矩陣迴旋係依據 n x m 矩陣，來描述輸入影像內的指定像素值如何與鄰近像素值結合以產生結果像素值。每一個結果像素都是根據將矩陣套用到對應的指定像素及其鄰近像素所決定。&lt;br /&gt;//對於 3 x 3 矩陣迴旋，下列公式可用於每一個獨立的顏色色版： &lt;br /&gt;//dst (x, y) = ((src (x-1, y-1) * a0 + src(x, y-1) * a1....&lt;br /&gt;//                   src(x, y+1) * a7 + src (x+1,y+1) * a8) / divisor) + bias&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;matrixX : Number&lt;/strong&gt; //矩陣的 x 維度 (矩陣的行數)。&lt;br /&gt;&lt;strong&gt;matrixY : Number&lt;/strong&gt; //矩陣的 y 維度 (矩陣的列數)。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;divisor : Number &lt;/strong&gt; &lt;br /&gt;//預設值為 1。 除數值是所有矩陣值總和除以結果的總顏色飽和度。 若值是 0 則忽略，改用預設值。 &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;bias : Number &lt;/strong&gt; &lt;br /&gt;//增加至矩陣變化結果的偏差值量。偏差值會增加每個色版的顏色值，可讓深顏色看起來明亮一點。 預設值為 0。 &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;preserveAlpha : Boolean&lt;/strong&gt; //是否保留 Alpha 色版而未保留濾鏡效果，或是否套用到 Alpha 色版及顏色色版。&lt;br /&gt;&lt;strong&gt;clamp : Boolean &lt;/strong&gt; //是否應該固定影像。&lt;br /&gt;&lt;strong&gt;color : uint&lt;/strong&gt; //用來替代原始影像中像素的 16 進位顏色。&lt;br /&gt;&lt;strong&gt;alpha : Number&lt;/strong&gt;  //替代顏色的 Alpha 值。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;建構子:&lt;br /&gt;&lt;strong&gt;ConvolutionFilter(&lt;br /&gt;matrixX:Number = 0, matrixY:Number = 0, &lt;br /&gt;matrix:Array = null, &lt;br /&gt;divisor:Number = 1.0, bias:Number = 0.0, &lt;br /&gt;preserveAlpha:Boolean = true, clamp:Boolean = true, &lt;br /&gt;color:uint = 0, alpha:Number = 0.0)&lt;/strong&gt;&lt;br /&gt;//把所有參數初始化給 ConvolutionFilter 實體就對了&lt;br /&gt;&lt;br /&gt;方法:&lt;br /&gt;&lt;strong&gt;clone():BitmapFilter&lt;/strong&gt; &lt;br /&gt;//傳回此濾鏡物件的副本。&lt;br /&gt;&lt;br /&gt;簡單範例如下:&lt;br /&gt;var blur:Array = &lt;br /&gt;[0,1,0,&lt;br /&gt; 1,1,1,&lt;br /&gt; 0,1,0];&lt;br /&gt;&lt;br /&gt;var sharpen:Array =&lt;br /&gt;[0,-1,0,&lt;br /&gt; -1,5,-1,&lt;br /&gt; 0,-1,0];&lt;br /&gt;&lt;br /&gt;var edge:Array =&lt;br /&gt;[0,-1,0,&lt;br /&gt; -1,4,-1,&lt;br /&gt; 0,-1,0];&lt;br /&gt;&lt;br /&gt;var emboss:Array = &lt;br /&gt;[-2,-1,0,&lt;br /&gt; -1,1,1,&lt;br /&gt; 0,1,2];&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-8888538174932930208?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/8888538174932930208/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=8888538174932930208' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/8888538174932930208'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/8888538174932930208'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/03/convolutionfilter.html' title='矩陣迴旋濾鏡-ConvolutionFilter'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-2441991812864377627</id><published>2009-03-17T22:41:00.005+08:00</published><updated>2009-11-12T18:28:07.405+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><category scheme='http://www.blogger.com/atom/ns#' term='工具'/><title type='text'>Flex 快速鍵</title><content type='html'>Flex 的快速鍵...&lt;br /&gt;跟 Flash Develop 的快速鍵&lt;br /&gt;在共通性上並不好&lt;br /&gt;&lt;br /&gt;不過 Flex 是 Eclipse Base 的 Tool&lt;br /&gt;應該是比較多使用者在用吧....&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Ctrl + Shift + T&lt;/strong&gt; //檢視專案中的類別原始碼(這個太讚了!!我喜歡!)&lt;br /&gt;&lt;strong&gt;Ctrl + O&lt;/strong&gt; //檢視檔案 Outline&lt;br /&gt;&lt;strong&gt;Alt + /&lt;/strong&gt; //程式碼屬性提示&lt;br /&gt;Ctrl + Shift + Space //程式碼參數提示&lt;br /&gt;&lt;strong&gt;Ctrl + Alt + R&lt;/strong&gt; //Rename功能(自動更新專案所有檔案中被更名的成員)&lt;br /&gt;Ctrl + Alt + ↑ //複製游標所在行並貼上在新行&lt;br /&gt;Ctrl + Alt + ↓ //複製游標所在行&lt;br /&gt;Ctrl + D //刪除游標所在行&lt;br /&gt;Ctrl + Shift + p //尋找成對大括弧&lt;br /&gt;&lt;br /&gt;Alt + ↑ //游標所在行向上移動&lt;br /&gt;Alt + ↓ //游標所在行向下移動&lt;br /&gt;Ctrl + K //尋找(游標反白的字串)&lt;br /&gt;F3 //尋找宣告(如在call function的地方按, 可以跳到該function)&lt;br /&gt;Ctrl + / //註解單行&lt;br /&gt;Ctrl + Shift + c //註解區塊&lt;br /&gt;&lt;br /&gt;Ctrl + M //編輯視窗放到最大&lt;br /&gt;Alt + ← //切換到左頁籤檔案&lt;br /&gt;Alt + → //切換到右頁籤檔案&lt;br /&gt;&lt;br /&gt;F11 //Debug&lt;br /&gt;Ctrl + F11 //Run&lt;br /&gt;Ctrl + B //Build All Projects&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-2441991812864377627?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/2441991812864377627/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=2441991812864377627' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2441991812864377627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2441991812864377627'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/03/flex.html' title='Flex 快速鍵'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-2951218378653415970</id><published>2009-03-02T10:21:00.009+08:00</published><updated>2009-03-18T00:04:37.568+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='工具'/><title type='text'>FlashDevelop 快速鍵</title><content type='html'>最近接觸到了 FlashDevelop 這個軟體&lt;br /&gt;算是很不錯的 ActionScript 編輯器(重點是免費!!)&lt;br /&gt;&lt;br /&gt;以下列出一些快捷鍵做個備忘吧&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Ctrl + Shift + 1&lt;/strong&gt; //自動匯入類別, 產生 Event Handler, Method override, 產生 Getter/setter, 自動宣告變數(或本地變數轉成類別變數), 實做介面方法...等等&lt;br /&gt;&lt;strong&gt;Ctrl + B&lt;/strong&gt; //插入 Snippet&lt;br /&gt;&lt;strong&gt;Ctrl + Shift + K&lt;/strong&gt; //插入色碼&lt;br /&gt;-------------------------------------------&lt;br /&gt;Ctrl + Shift + Space //出現程式碼提示&lt;br /&gt;Ctrl + Alt + Space //類別提示&lt;br /&gt;F1 //(提示區塊有 ... 時)展開訊息&lt;br /&gt;F4 //尋找宣告(如在call function的地方按, 可以跳到該function)&lt;br /&gt;Shift + F4 //從宣告返回(按了F4後回去用的)&lt;br /&gt;Ctrl + D //游標所在行複製並貼上新行&lt;br /&gt;&lt;br /&gt;Ctrl + Q //單行註解&lt;br /&gt;Ctrl + Shift + Q //取消單行註解&lt;br /&gt;&lt;br /&gt;Ctrl + Shift + F //程式碼收合&lt;br /&gt;Ctrl + Shift + A //程式碼全部收合&lt;br /&gt;Ctrl + Shift + E //程式碼全部展開&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-2951218378653415970?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/2951218378653415970/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=2951218378653415970' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2951218378653415970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2951218378653415970'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/03/flashdevelop.html' title='FlashDevelop 快速鍵'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-7698594100448309448</id><published>2009-02-23T16:06:00.003+08:00</published><updated>2009-04-28T09:38:30.471+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>在 swf 中傳遞參數與接收回應</title><content type='html'>//========================================&lt;br /&gt;//傳送參數(不接收回應)&lt;br /&gt;//========================================&lt;br /&gt;var handlePage:String = "xxxxxxxx.aspx";&lt;br /&gt;var req:URLRequest = new URLRequest(handlePage);&lt;br /&gt;var param:URLVariables = new URLVariables();&lt;br /&gt;param.var1 = "11111111";&lt;br /&gt;param.var2 = "22222222";&lt;br /&gt;req.method = URLRequestMethod.POST;&lt;br /&gt;req.data = param;&lt;br /&gt;sendToURL(req);&lt;br /&gt;//若是要跳下頁並帶參數要用 navigateToURL(req, "_self");&lt;br /&gt;&lt;br /&gt;// data 可以為 ByteArray、URLVariables 或 String 類型&lt;br /&gt;// data 為 URLVariables 物件時，若方法是 POST，就會使用 x-www-form-urlencoded 格式來編碼變數；若方法是 GET， URLVariables 就會使用 URLRequest 物件傳送的變數&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;//========================================&lt;br /&gt;//傳送參數(接收回應)&lt;br /&gt;//========================================&lt;br /&gt;function onBtnClick(event:MouseEvent){&lt;br /&gt; //送出並等待回應&lt;br /&gt; var loader:URLLoader = new URLLoader();&lt;br /&gt; var param:URLVariables = new URLVariables();&lt;br /&gt; var req:URLRequest = new URLRequest("handlePage.aspx");&lt;br /&gt; param.var1 = "11111111";&lt;br /&gt; param.var2 = "22222222";&lt;br /&gt; req.method = URLRequestMethod.POST;&lt;br /&gt; req.data = param;&lt;br /&gt; loader.dataFormat = URLLoaderDataFormat.TEXT;&lt;br /&gt; //可接收三種dataFormat: &lt;br /&gt; //BINARY 二進位資料形式&lt;br /&gt; //TEXT 文字形式&lt;br /&gt; //VARIABLES URL參數形式&lt;br /&gt; loader.addEventListener(Event.COMPLETE, onResponse);&lt;br /&gt; //用 try..catch 包住 load 以處理錯誤&lt;br /&gt; try {&lt;br /&gt;  loader.load(req);&lt;br /&gt; } catch (error:Error) {&lt;br /&gt;  trace(error.toString());&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;function onResponse(event:Event){&lt;br /&gt; var loader:URLLoader = URLLoader(e.target);&lt;br /&gt; info_txt.text = loader.data;&lt;br /&gt; //如果回應的類型是 URLLoaderDataFormat.VARIABLES, 可以用 loader.data.參數名 取出值&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-7698594100448309448?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/7698594100448309448/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=7698594100448309448' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7698594100448309448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7698594100448309448'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/10/flash_22.html' title='在 swf 中傳遞參數與接收回應'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-7363716294285110664</id><published>2009-02-18T13:33:00.003+08:00</published><updated>2009-02-18T15:36:50.961+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>Date 類別</title><content type='html'>package: 最上層 &lt;br /&gt;public final dynamic class Date&lt;br /&gt;繼承: Object&lt;br /&gt;&lt;br /&gt;(以下都省略 UTC 的部份)&lt;br /&gt;屬性:&lt;br /&gt;&lt;strong&gt;fullYear : Number&lt;/strong&gt; //完整年份 (四位數的數字，如 2000)&lt;br /&gt;&lt;strong&gt;month : Number&lt;/strong&gt; //月份 (0 代表一月，1 代表二月，其它依此類推)&lt;br /&gt;&lt;strong&gt;date : Number&lt;/strong&gt; //月份中的日期 (從 1 到 31 的整數)&lt;br /&gt;&lt;strong&gt;day : Number&lt;/strong&gt; //[read-only] 星期別 (0 代表星期日，1 代表星期一，其它依此類推)&lt;br /&gt;&lt;strong&gt;hours : Number&lt;/strong&gt; //時 (從 0 到 23 的整數)&lt;br /&gt;&lt;strong&gt;minutes : Number&lt;/strong&gt; //分 (從 0 到 59 的整數)&lt;br /&gt;&lt;strong&gt;seconds : Number&lt;/strong&gt; //秒 (從 0 到 59 的整數)&lt;br /&gt;&lt;strong&gt;milliseconds : Number&lt;/strong&gt; //毫秒部分 (從 0 到 999 的整數)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;time : Number&lt;/strong&gt; //全球時間 1970/1/1 午夜開始計算的毫秒數&lt;br /&gt;&lt;strong&gt;timezoneOffset : Number&lt;/strong&gt; //[read-only] 與全球時間 (UTC) 之間相差的分鐘數&lt;br /&gt;&lt;br /&gt;建構子:&lt;br /&gt;&lt;strong&gt;Date(yearOrTimevalue:Object, month:Number, date:Number = 1, hour:Number = 0, minute:Number = 0, second:Number = 0, millisecond:Number = 0)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;方法:&lt;br /&gt;&lt;strong&gt;getFullYear():Number&lt;/strong&gt; //傳回完整年份 (四位數的數字，如 2000)&lt;br /&gt;&lt;strong&gt;getMonth():Number&lt;/strong&gt; //傳回月 (0 代表一月，1 代表二月，其它依此類推)&lt;br /&gt;&lt;strong&gt;getDate():Number&lt;/strong&gt; //傳回月份中的日期 (從 1 到 31 的整數)&lt;br /&gt;&lt;strong&gt;getDay():Number&lt;/strong&gt; //傳回星期 (0 代表星期日，1 代表星期一，其它依此類推)&lt;br /&gt;&lt;strong&gt;getHours():Number&lt;/strong&gt; //傳回時 (從 0 到 23 的整數)&lt;br /&gt;&lt;strong&gt;getMinutes():Number&lt;/strong&gt; //傳回分 (從 0 到 59 的整數)&lt;br /&gt;&lt;strong&gt;getSeconds():Number&lt;/strong&gt; //傳回秒 (從 0 到 59 的整數)&lt;br /&gt;&lt;strong&gt;getMilliseconds():Number&lt;/strong&gt; //傳回毫秒 (從 0 到 999 的整數)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;getTime():Number&lt;/strong&gt; //傳回全球時間 1970/1/1 午夜開始計算的毫秒數&lt;br /&gt;&lt;strong&gt;getTimezoneOffset():Number&lt;/strong&gt; //傳回與全球時間 (UTC) 之間相差的分鐘數&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;parse(date:String):Number&lt;/strong&gt; //[static] 將代表日期的字串轉換成數字形式(從 UTC 時間 1970/1/1 日開始經過的毫秒數)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;setFullYear(year:Number, month:Number, day:Number):Number&lt;/strong&gt; //設定年份，並傳回以毫秒為單位的新時間&lt;br /&gt;&lt;strong&gt;setMonth(month:Number, day:Number):Number&lt;/strong&gt; //設定月份及選擇性的月份日期別，並傳回以毫秒為單位的新時間&lt;br /&gt;&lt;strong&gt;setDate(day:Number):Number&lt;/strong&gt; //設定月份中的日期，並傳回以毫秒為單位的新時間&lt;br /&gt;&lt;strong&gt;setHours(hour:Number, minute:Number, second:Number, millisecond:Number):Number&lt;/strong&gt; //設定小時，並傳回以毫秒為單位的新時間&lt;br /&gt;&lt;strong&gt;setMinutes(minute:Number, second:Number, millisecond:Number):Number&lt;/strong&gt; //設定分鐘，並傳回以毫秒為單位的新時間&lt;br /&gt;&lt;strong&gt;setSeconds(second:Number, millisecond:Number):Number&lt;/strong&gt; //設定秒數，並傳回以毫秒為單位的新時間&lt;br /&gt;&lt;strong&gt;setMilliseconds(millisecond:Number):Number&lt;/strong&gt; //設定毫秒，並傳回以毫秒為單位的新時間&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;setTime(millisecond:Number):Number&lt;/strong&gt; //使用從 1970/1/1 午夜開始到當時的毫秒數來設定日期，並傳回以毫秒為單位的新時間&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;toString():String&lt;/strong&gt; //會傳回星期別、日期、時間及時區的字串&lt;br /&gt;&lt;strong&gt;toDateString():String&lt;/strong&gt; //傳回星期別與日期的字串&lt;br /&gt;&lt;strong&gt;toTimeString():String&lt;/strong&gt; //只傳回時間與時區的字串&lt;br /&gt;&lt;strong&gt;toLocaleString():String&lt;/strong&gt; //傳回本地時間之星期別、日期、時間的字串&lt;br /&gt;&lt;strong&gt;toLocaleDateString():String&lt;/strong&gt; //只傳回星期別與日期的字串&lt;br /&gt;&lt;strong&gt;toLocaleTimeString():String&lt;/strong&gt; //只傳回時間的字串&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;valueOf():Number&lt;/strong&gt; //會傳回 Date 物件從全球時間 1970/1/1 午夜開始計算的毫秒數&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-7363716294285110664?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/7363716294285110664/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=7363716294285110664' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7363716294285110664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7363716294285110664'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/02/date.html' title='Date 類別'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-2853897038291915141</id><published>2009-02-16T14:52:00.007+08:00</published><updated>2009-09-23T15:15:01.278+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='通用'/><title type='text'>RegExp 正規表示式-符號意義參考表</title><content type='html'>中繼字元&lt;br /&gt;&lt;table border="1" cellspacing="0"&gt;&lt;tr&gt;&lt;th scope="col"&gt;中繼字元&lt;/th&gt;&lt;th scope="col"&gt;意義&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;^ (跳脫字元)&lt;/th&gt;&lt;td&gt;1.字串的開頭&lt;br /&gt;2.設定 m 旗標時,代表行的開頭&lt;br /&gt;3.用於字元類別時, 代表&amp;quot;負&amp;quot;(相反)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;$ (貨幣符號)&lt;/th&gt;&lt;td&gt;1.字串的結尾&lt;br /&gt;2.設定 m 旗標時,代表行的結尾(\n前的位置)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;\ (反斜線)&lt;/th&gt;&lt;td&gt;特殊字元跳脫符號&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;&lt;p&gt;. (點)&lt;/p&gt;&lt;/th&gt;&lt;td&gt;1.任何單一字元&lt;br /&gt;2.設定 s 旗標時，代表換行 (\n)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;* (星號)&lt;/th&gt;&lt;td&gt;重複 0 或 多 次&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;+ (加號)&lt;/th&gt;&lt;td&gt;重複 1 或 多 次&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;? (問號)&lt;/th&gt;&lt;td&gt;重複 0 或 1 次&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;( )&lt;/th&gt;&lt;td&gt;定義群組&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;[ ]&lt;/th&gt;&lt;td&gt;定義字元類別 (在字元類別(通常是中繼字元)中，其它字元會被視為一般字元，因此無須加上反斜線)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;| (管道)&lt;/th&gt;&lt;td&gt;替代 (就是&amp;quot;或&amp;quot;的意思)&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;中繼序列&lt;br /&gt;&lt;table border="1" cellspacing="0"&gt;&lt;tr&gt;&lt;th scope="col"&gt;中繼序列&lt;/th&gt;&lt;th scope="col"&gt;意義&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;{ }&lt;/th&gt;&lt;td&gt;數量詞&lt;br /&gt;{n} 代表重複 n 次; {n, } 代表重複 n 次以上; {n1, n2} 代表重複 n1~n2 次&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;\b&lt;/th&gt;&lt;td&gt;文字字元和非文字字元之間的位置&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;\B&lt;/th&gt;&lt;td&gt;兩個文字字元之間的位置。也符合兩個非文字字元之間的位置&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;&lt;p&gt;\d&lt;/p&gt;&lt;/th&gt;&lt;td&gt;十進位數字(意思就是 0-9 )&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;\D&lt;/th&gt;&lt;td&gt;數字外任何字元&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;\f&lt;/th&gt;&lt;td&gt;換頁&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;\n&lt;/th&gt;&lt;td&gt;換行&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;\r&lt;/th&gt;&lt;td&gt;回車符號(Enter)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;\s&lt;/th&gt;&lt;td&gt;任何空白字元 (空格、定位點、新行或傳回字元)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;\S&lt;/th&gt;&lt;td&gt;空白字元以外的任何字元&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;\t&lt;/th&gt;&lt;td&gt;Tab&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;&lt;p&gt;\u&lt;em&gt;nnnn&lt;/em&gt;&lt;/p&gt;&lt;/th&gt;&lt;td&gt;Unicode 字元&lt;br /&gt;(字元代碼由十六進位數字 &lt;em&gt;nnnn&lt;/em&gt; 指定)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;\v&lt;/th&gt;&lt;td&gt;垂直換頁字元&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;\w&lt;/th&gt;&lt;td&gt;英文文字字元 (A-Z、a-z、0-9 或 _)&lt;br /&gt;(請注意，\w 不符合非英文字元，例如 È、Ò 或 Á)&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;th scope="row"&gt;\W&lt;/th&gt;&lt;td&gt;英文文字字元以外的任何字元&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;\xnn&lt;/th&gt;&lt;td&gt; ASCII 值字元&lt;br /&gt;(字元代碼由十六進位數字 &lt;em&gt;nn&lt;/em&gt; 所定義)&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;旗標與屬性&lt;br /&gt;&lt;table border="1" cellspacing="0"&gt;&lt;tr&gt;&lt;th scope="col"&gt;旗標&lt;/th&gt;&lt;th scope="col"&gt;屬性&lt;/th&gt;&lt;th scope="col"&gt;說明&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;g&lt;/th&gt;&lt;td&gt;global&lt;/td&gt;&lt;td&gt;&lt;p&gt;符合一個以上&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;i&lt;/th&gt;&lt;td&gt;&lt;p&gt;ignoreCase&lt;/p&gt;&lt;/td&gt;&lt;td&gt;不區分大小寫&lt;br /&gt;(但不套用至擴充字元，如 é 和 È)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;m&lt;/th&gt;&lt;td&gt;multi-line&lt;/td&gt;&lt;td&gt;$ 符合行的開頭&lt;br /&gt;^ 符合行的結尾&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;s&lt;/th&gt;&lt;td&gt;dotall&lt;/td&gt;&lt;td&gt;. (點) 符合換行字元 (\n)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;x&lt;/th&gt;&lt;td&gt;extended&lt;/td&gt;&lt;td&gt;允許忽略空格&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;簡單使用範例：&lt;/span&gt;&lt;br /&gt;從外部讀入的 XML 或文字檔資料如果內容不止一行&lt;br /&gt;那麼直接拿來顯示時在格式上"可能"會有多餘空行的問題&lt;br /&gt;這時可以利用正規表示式這麼解決：&lt;br /&gt;&lt;br /&gt;var s:String = e.target.data as String; //來源字串&lt;br /&gt;var pattern:RegExp = new RegExp(/\r\n/g);&lt;br /&gt;s = s.replace(pattern, "\n");&lt;br /&gt;&lt;br /&gt;意思就是將來源字串利用 String 的 replace 方法將換行 \r\n 換成一個 \n 就好&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-2853897038291915141?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/2853897038291915141/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=2853897038291915141' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2853897038291915141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2853897038291915141'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/02/regexp.html' title='RegExp 正規表示式-符號意義參考表'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-8370055537411835290</id><published>2009-02-06T16:05:00.003+08:00</published><updated>2009-02-06T16:54:15.890+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>經驗累積-Error #2122排除</title><content type='html'>Error #2122 官方說明:&lt;br /&gt;&lt;br /&gt;2122 違反安全執行程序：_ 無法存取 _。需要原則檔案，但載入此媒體時並未設定 checkPolicyFile 旗標。&lt;br /&gt;SecurityError: Error #2122: Security sandbox violation: 錯誤物件: _ cannot access _. A policy file is required, but the checkPolicyFile flag was not set when this media was loaded.&lt;br /&gt;&lt;br /&gt;發生情況:&lt;br /&gt;當跨網域載入圖片時, 即使已經指定了 crossdomain.xml 但實際部署時卻發生 #2122 錯誤&lt;br /&gt;查了相關 checkPolicyFile 的說明還是找不出問題點&lt;br /&gt;於是上網搜尋了一下&lt;br /&gt;發現&lt;a href="http://www.actionscript.org/forums/showthread.php3?t=162130"&gt;這裡&lt;/a&gt;有提到&lt;br /&gt;圖片在 INIT 時改變了 Bitmap 的內容(範例中為設定smoothing 屬性為 true)&lt;br /&gt;結果就出現 #2122 錯誤&lt;br /&gt;這一點以後要多多注意&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-8370055537411835290?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/8370055537411835290/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=8370055537411835290' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/8370055537411835290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/8370055537411835290'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/02/error-2122.html' title='經驗累積-Error #2122排除'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-9119644081134239936</id><published>2009-02-04T14:37:00.015+08:00</published><updated>2009-02-04T16:42:14.052+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>影像色調的矩陣-ColorMatrixFilter</title><content type='html'>flash.filters.ColorMatrixFilter 類別是用 4 x 5 矩陣產生一組 RGBA 值。可以用來進行飽和度變更、色相旋轉、Alpha 明度以及各種其它效果。&lt;br /&gt;&lt;br /&gt;適用物件: 繼承自 DisplayObject 的物件都可套用，例如 MovieClip、SimpleButton、TextField 和 Video 物件，以及 BitmapData 物件。&lt;br /&gt;&lt;br /&gt;套用方式:(套用時該物件cacheAsBitmap 屬性會自動設為 true, 移除則還原)&lt;br /&gt;MovieClip、TextField、Button 與 Video: 使用 &lt;strong&gt;filters&lt;/strong&gt; 屬性 (從 DisplayObject 繼承而來)。&lt;br /&gt;//只要清除 filters 屬性就可以移除濾鏡，不會修改該物件。&lt;br /&gt;BitmapData 物件: 使用 &lt;strong&gt;BitmapData.applyFilter()&lt;/strong&gt; 方法。&lt;br /&gt;//會採用原始 BitmapData 物件和濾鏡物件，結果會產生套用濾鏡後的影像。&lt;br /&gt;&lt;br /&gt;尺寸限制: 影像的 width 或 height 不可超過 2880 px，否則不會套用濾鏡。&lt;br /&gt;&lt;br /&gt;建構子:&lt;br /&gt;&lt;strong&gt;public function ColorMatrixFilter(matrix:Array = null)&lt;/strong&gt;&lt;br /&gt;//傳入的 matrix 參數即為長度 20 的 Array&lt;br /&gt;&lt;br /&gt;屬性:&lt;br /&gt;&lt;strong&gt;matrix : Array&lt;/strong&gt;&lt;br /&gt;//用於 4 x 5 顏色變化的 20 個項目陣列。使用 Array 的 concat() 方法調整矩陣內容&lt;br /&gt;&lt;br /&gt;方法:&lt;br /&gt;&lt;strong&gt;clone():BitmapFilter &lt;/strong&gt;//傳回此濾鏡物件的副本。&lt;br /&gt;&lt;br /&gt;完全沒有套用任何濾鏡的 ColorMatrixFilter 應該是這樣: &lt;table style="TEXT-ALIGN: center" cellspacing="1" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;th scope="col" colspan="2" rowspan="2"&gt; &lt;/th&gt;&lt;th scope="col" colspan="7"&gt;Value&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="col"&gt; &lt;/th&gt;&lt;th scope="col"&gt;Red&lt;/th&gt;&lt;th scope="col"&gt;Green&lt;/th&gt;&lt;th scope="col"&gt;Blue&lt;/th&gt;&lt;th scope="col"&gt;Alpha&lt;/th&gt;&lt;th scope="col"&gt;Offset&lt;/th&gt;&lt;th scope="col"&gt; &lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row" rowspan="6"&gt;Channel&lt;/th&gt;&lt;th scope="row"&gt; &lt;/th&gt;&lt;td&gt;┌ &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt;┐&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;Red&lt;/th&gt;&lt;td&gt;│&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;│&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;Green&lt;/th&gt;&lt;td&gt;│&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;│&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;Blue&lt;/th&gt;&lt;td&gt;│&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;│&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;Alpha&lt;/th&gt;&lt;td&gt;│&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;│&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt; &lt;/th&gt;&lt;td&gt;└&lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt; &lt;/td&gt;&lt;td&gt;┘&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;簡單範例如下:&lt;br /&gt;var matrix1:Array = &lt;br /&gt;[1,0,0,0,0,&lt;br /&gt; 0,2,0,0,0,&lt;br /&gt; 0,0,1,0,0,&lt;br /&gt; 0,0,0,1,0];&lt;br /&gt;var cmf:ColorMatrixFilter = new ColorMatrixFilter(matrix1);&lt;br /&gt;clip.filters = [cmf];&lt;br /&gt;//套用後 clip 的綠色變成兩倍&lt;br /&gt;&lt;br /&gt;var matrix2:Array = new Array();&lt;br /&gt;matrix2 = matrix2.concat([1, 0, 0, 0, 0]); // red&lt;br /&gt;matrix2 = matrix2.concat([0, 0, 0, 0, 0]); // green&lt;br /&gt;matrix2 = matrix2.concat([0, 0, 0, 0, 0]); // blue&lt;br /&gt;matrix2 = matrix2.concat([0, 0, 0, 1, 0]); // alpha&lt;br /&gt;applyFilter(clip, matrix2);&lt;br /&gt;&lt;br /&gt;function applyFilter(child:DisplayObject, matrix:Array):void{&lt;br /&gt;　var filter:ColorMatrixFilter = new ColorMatrixFilter(matrix);&lt;br /&gt;　var filters:Array = new Array();&lt;br /&gt;　filters.push(filter);&lt;br /&gt;　child.filters = filters;&lt;br /&gt;}&lt;br /&gt;//套用後 clip 只看得到 R Channel&lt;br /&gt;&lt;br /&gt;還可以玩玩看下面方法:&lt;br /&gt;調整亮度: 將 RGB 三個 Channel 的 Offset 都調整至同一數值(如:50)&lt;br /&gt;&lt;br /&gt;灰階: 將 RGB 三個 Channel 的 R,G,B 都調整至同一數值(如:0.5)&lt;br /&gt;&lt;br /&gt;調整對比: 將 R Channel 的 R, G Channel 的 G, B Channel 的 B 調整至同一數值(如:3)&lt;br /&gt;&lt;br /&gt;負片效果: 將 RGB 三個 Channel 的 Offset 都調整至255, 並將 R Channel 的 R, G Channel 的 G, B Channel 的 B 調整至 -1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-9119644081134239936?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/9119644081134239936/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=9119644081134239936' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/9119644081134239936'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/9119644081134239936'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/02/colormatrixfilter.html' title='影像色調的矩陣-ColorMatrixFilter'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-5166291570041117822</id><published>2009-01-17T16:46:00.006+08:00</published><updated>2009-01-17T17:32:56.215+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>混合模式 BlendMode 的常數</title><content type='html'>BlendMode類別 提供視覺混合模式特效所需之常數值。&lt;br /&gt;用在下面兩個地方： &lt;br /&gt;flash.display.DisplayObject 類別的 blendMode 屬性&lt;br /&gt;flash.display.BitmapData 類別 draw() 方法的 blendMode 參數&lt;br /&gt;&lt;br /&gt;直接來看有哪些static常數吧~~&lt;br /&gt;---------------------------------------------&lt;br /&gt;&lt;strong&gt;NORMAL&lt;/strong&gt; : String = "normal" //物件出現在背景前面&lt;br /&gt;---------------------------------------------&lt;br /&gt;&lt;strong&gt;LAYER&lt;/strong&gt; : String = "layer" //強制建立物件的透明度群組&lt;br /&gt;---------------------------------------------&lt;br /&gt;&lt;strong&gt;DARKEN&lt;/strong&gt; : String = "darken" //在物件顏色和背景顏色中選取比較暗(值較小)的顏色 &lt;br /&gt;&lt;strong&gt;MULTIPLY&lt;/strong&gt; : String = "multiply" //將顯示物件基本顏色的值乘以背景顏色的值，然後除以 0xFF 以進行一般化，得到比較暗的顏色&lt;br /&gt;---------------------------------------------&lt;br /&gt;&lt;strong&gt;LIGHTEN&lt;/strong&gt; : String = "lighten" //在物件顏色和背景顏色中選取比較淡(值較大)的顏色&lt;br /&gt;&lt;strong&gt;SCREEN&lt;/strong&gt; : String = "screen" //將物件的互補色 (反色) 乘以背景的互補色，產生漂白特效 &lt;br /&gt;---------------------------------------------&lt;br /&gt;&lt;strong&gt;OVERLAY&lt;/strong&gt; : String = "overlay" //根據背景的暗度調整每個像素的顏色&lt;br /&gt;&lt;strong&gt;HARDLIGHT&lt;/strong&gt; : String = "hardlight" //根據物件暗度調整每個像素的顏色&lt;br /&gt;---------------------------------------------&lt;br /&gt;&lt;strong&gt;ADD&lt;/strong&gt; : String = "add" //將色值加上背景的色值，最大只能套用 0xFF&lt;br /&gt;&lt;strong&gt;SUBTRACT&lt;/strong&gt; : String = "subtract" //從背景顏色的值減去顯示物件基本顏色的值，最小只能套用 0&lt;br /&gt;&lt;strong&gt;DIFFERENCE&lt;/strong&gt; : String = "difference" //將物件顏色和背景色中較淡的色值減去較暗的色值&lt;br /&gt;---------------------------------------------&lt;br /&gt;&lt;strong&gt;INVERT&lt;/strong&gt; : String = "invert" //反轉背景&lt;br /&gt;&lt;strong&gt;ALPHA&lt;/strong&gt; : String = "alpha" //將 Alpha 值套用到背景&lt;br /&gt;&lt;strong&gt;ERASE&lt;/strong&gt; : String = "erase" //根據物件 Alpha 值擦除背景&lt;br /&gt;---------------------------------------------&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-5166291570041117822?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/5166291570041117822/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=5166291570041117822' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/5166291570041117822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/5166291570041117822'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/01/blendmode.html' title='混合模式 BlendMode 的常數'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-2722722179794757751</id><published>2009-01-17T14:45:00.009+08:00</published><updated>2009-03-11T11:48:41.495+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>縮放傾斜旋轉與漸層設定- Matrix</title><content type='html'>Matrix 類別代表變形矩陣( 3x3 )&lt;br /&gt;&lt;table border="0" cellspacing="0" cellpadding="0"&gt;&lt;colgroup&gt;&lt;col width="5px"/&gt;&lt;col width="25px" align="center"/&gt;&lt;col width="25px" align="center"/&gt;&lt;col width="25px" align="center"/&gt;&lt;col width="5px"/&gt;&lt;col width="20px"/&gt;&lt;col width="5px"/&gt;&lt;col width="50px" align="center"/&gt;&lt;col width="50px" align="center"/&gt;&lt;col width="50px" align="center"/&gt;&lt;col width="5px"/&gt;&lt;/colgroup&gt;&lt;tr&gt;&lt;td&gt;┌&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;┐&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;┌&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;┐&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;│&lt;/td&gt;&lt;td&gt;a&lt;/td&gt;&lt;td&gt;b&lt;/td&gt;&lt;td&gt;tx&lt;/td&gt;&lt;td&gt;│&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;│&lt;/td&gt;&lt;td&gt;x縮放&lt;/td&gt;&lt;td&gt;y傾斜&lt;/td&gt;&lt;td&gt;x位移&lt;/td&gt;&lt;td&gt;│&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;│&lt;/td&gt;&lt;td&gt;c&lt;/td&gt;&lt;td&gt;d&lt;/td&gt;&lt;td&gt;ty&lt;/td&gt;&lt;td&gt;│&lt;/td&gt;&lt;td&gt;=&amp;gt;&lt;/td&gt;&lt;td&gt;│&lt;/td&gt;&lt;td&gt;x傾斜&lt;/td&gt;&lt;td&gt;y縮放&lt;/td&gt;&lt;td&gt;y位移&lt;/td&gt;&lt;td&gt;│&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;│&lt;/td&gt;&lt;td&gt;u&lt;/td&gt;&lt;td&gt;v&lt;/td&gt;&lt;td&gt;w&lt;/td&gt;&lt;td&gt;│&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;│&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;0&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;│&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;└&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;┘&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;└&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;&amp;nbsp;&lt;/td&gt;&lt;td&gt;┘&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;透過將 Matrix 實體指派給 DisplayObject.transform.matrix 屬性　可以執行圖像旋轉、縮放及傾斜及位移等功能&lt;br /&gt;&lt;br /&gt;Matrix 物件也可以當做某些方法的參數使用，例如&lt;br /&gt;BitmapData 物件的 draw() 方法&lt;br /&gt;或是&lt;br /&gt;Graphics 物件的 beginBitmapFill()、beginGradientFill() 或 lineGradientStyle() 方法&lt;br /&gt;&lt;br /&gt;建構子:&lt;br /&gt;Matrix(a:Number = 1, b:Number = 0, c:Number = 0, d:Number = 1, tx:Number = 0, ty:Number = 0)&lt;br /&gt;// b 屬性代表傾斜角度與 y 軸的正切函數值；c 屬性則代表傾斜角度與 x 軸的正切函數值。&lt;br /&gt;&lt;br /&gt;方法:&lt;br /&gt;&lt;strong&gt;scale(sx:Number, sy:Number):void&lt;/strong&gt; //縮放&lt;br /&gt;&lt;strong&gt;rotate(angle:Number):void&lt;/strong&gt; //旋轉(旋轉角度，以弧度為單位)&lt;br /&gt;&lt;strong&gt;translate(dx:Number, dy:Number):void&lt;/strong&gt; //平移&lt;br /&gt;&lt;strong&gt;identity():void&lt;/strong&gt; //恢復原比例(1:1)且無旋轉位移狀態&lt;br /&gt;&lt;strong&gt;createBox(scaleX:Number, scaleY:Number, rotation:Number = 0, tx:Number = 0, ty:Number = 0):void &lt;/strong&gt;&lt;br /&gt;//用此方法等於一次設定scale, rotate 跟 translate 三個方法&lt;br /&gt;&lt;strong&gt;createGradientBox(&lt;br /&gt;　width:Number, height:Number, &lt;br /&gt;　rotation:Number = 0, &lt;br /&gt;　tx:Number = 0, ty:Number = 0):void &lt;/strong&gt;&lt;br /&gt;//建立 Graphics 類別之 beginGradientFill() 和 lineGradientStyle() 方法預期的特定矩陣樣式&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;concat(m:Matrix):void &lt;/strong&gt;&lt;br /&gt;//將某個矩陣與目前的矩陣連接，有效地結合兩個矩陣的幾何效果&lt;br /&gt;&lt;strong&gt;clone():Matrix &lt;/strong&gt;&lt;br /&gt;//傳回新 Matrix 物件 (此矩陣的翻版)，其具有和所包含物件完全相同的副本&lt;br /&gt;&lt;strong&gt;invert():void &lt;/strong&gt;&lt;br /&gt;//執行原始矩陣的反向轉換&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;deltaTransformPoint(point:Point):Point &lt;/strong&gt;&lt;br /&gt;//在轉換前的座標空間中指定一個點，並於轉換完成後傳回該點的座標。 &lt;br /&gt;&lt;strong&gt;transformPoint(point:Point):Point &lt;/strong&gt;&lt;br /&gt;//會傳回將 Matrix 物件所代表之幾何轉換套用至指定點的結果&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-2722722179794757751?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/2722722179794757751/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=2722722179794757751' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2722722179794757751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2722722179794757751'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/01/matrix.html' title='縮放傾斜旋轉與漸層設定- Matrix'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-3308203159540113864</id><published>2009-01-17T11:42:00.006+08:00</published><updated>2009-01-17T14:47:33.805+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>負責顯示物件變色的 ColorTransform</title><content type='html'>Flash 裡的色彩採用 32 位元色值( 0xAARRGGBB )&lt;br /&gt;若不算透明度, 也可寫為 24 位元色值( 0xRRGGBB )&lt;br /&gt;由於 int 可能會放不下32位元的顏色值, 所以是以 uint 型別存放&lt;br /&gt;&lt;br /&gt;當 ColorTransform 物件套用至顯示物件時，每個新的顏色色版數值計算方式如下：&lt;br /&gt;新的紅色值 = (舊的紅色值 * redMultiplier ) + redOffset &lt;br /&gt;新的綠色值 = (舊的綠色值 * greenMultiplier ) + greenOffset &lt;br /&gt;新的藍色值 = (舊的藍色值 * blueMultiplier ) + blueOffset &lt;br /&gt;新的 Alpha 值 = (舊的 Alpha 值 * alphaMultiplier ) + alphaOffset&lt;br /&gt;(以十進位來說, 每個顏色的值都是0~255, 高於255以255計, 低於0以0計)&lt;br /&gt;&lt;br /&gt;ColorTransform 物件的使用有兩種方式：&lt;br /&gt;1.在 BitmapData 類別之 colorTransform() 方法的 colorTransform 參數中使用 &lt;br /&gt;2.當作 Transform 物件 (可當作顯示物件的 transform 屬性使用) 的 colorTransform 屬性使用 &lt;br /&gt;&lt;br /&gt;接下來看看屬性:&lt;br /&gt;&lt;strong&gt;color&lt;/strong&gt; : uint //ColorTransform 物件的 RGB 顏色數值&lt;br /&gt;&lt;strong&gt;redMultiplier&lt;/strong&gt; : Number //十進位值，將會和紅色色版值相乘&lt;br /&gt;&lt;strong&gt;greenMultiplier&lt;/strong&gt; : Number //十進位值，將會和綠色色版值相乘&lt;br /&gt;&lt;strong&gt;blueMultiplier&lt;/strong&gt; : Number //十進位值，將會和藍色色版值相乘&lt;br /&gt;&lt;strong&gt;alphaMultiplier&lt;/strong&gt; : Number //十進位值，將會和 Alpha 透明度色版值相乘&lt;br /&gt;&lt;strong&gt;redOffset&lt;/strong&gt; : Number &lt;br /&gt;//從 -255 到 255 的數字。將會在乘以 redMultiplier 值之後，加上紅色色版值 &lt;br /&gt;&lt;strong&gt;greenOffset&lt;/strong&gt; : Number &lt;br /&gt;//從 -255 到 255 的數字。將會在乘以 greenMultiplier 值之後，加上綠色色版值&lt;br /&gt;&lt;strong&gt;blueOffset&lt;/strong&gt; : Number &lt;br /&gt;//從 -255 到 255 的數字。將會在乘以 blueMultiplier 值之後，加上藍色色版值&lt;br /&gt;&lt;strong&gt;alphaOffset&lt;/strong&gt; : Number &lt;br /&gt;//從 -255 到 255 的數字。將會在乘以 alphaMultiplier 值之後，加上 Alpha 透明度色版值&lt;br /&gt;建構子:&lt;br /&gt;ColorTransform(&lt;br /&gt;　redMultiplier:Number = 1.0, &lt;br /&gt;　greenMultiplier:Number = 1.0, &lt;br /&gt;　blueMultiplier:Number = 1.0, &lt;br /&gt;　alphaMultiplier:Number = 1.0, &lt;br /&gt;　redOffset:Number = 0, &lt;br /&gt;　greenOffset:Number = 0, &lt;br /&gt;　blueOffset:Number = 0, &lt;br /&gt;　alphaOffset:Number = 0)&lt;br /&gt;//以指定的顏色色版值和 Alpha 值為顯示物件建立 ColorTransform 物件。&lt;br /&gt;&lt;br /&gt;方法:&lt;br /&gt;&lt;strong&gt;concat(second:ColorTransform):void&lt;/strong&gt;&lt;br /&gt;連接 second 參數指定的 ColorTranform 物件與目前的 ColorTransform 物件，然後將目前的物件設定為結果 (兩個顏色轉換的累增組合)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-3308203159540113864?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/3308203159540113864/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=3308203159540113864' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3308203159540113864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3308203159540113864'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/01/colortransform.html' title='負責顯示物件變色的 ColorTransform'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-1429251142826868334</id><published>2009-01-17T11:18:00.008+08:00</published><updated>2009-01-17T11:42:41.228+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>顯示物件的變色與變形-Transform</title><content type='html'>DisplayObject 及其子系 有個屬性 transform&lt;br /&gt;該屬性為一個 Transform 物件(flash.geom.Transform)&lt;br /&gt;透過將 Transform 實體 指定(assign)給 DisplayObject 實體的 transform 屬性&lt;br /&gt;就可以控制變形, 旋轉或顏色&lt;br /&gt;&lt;br /&gt;那麼 Transform 物件 裡面有什麼屬性跟方法呢?&lt;br /&gt;看了一下doc...方法都是繼承來的..那來看看屬性就好吧&lt;br /&gt;&lt;br /&gt;屬性:&lt;br /&gt;&lt;strong&gt;colorTransform&lt;/strong&gt; : ColorTransform &lt;br /&gt;//ColorTransform 物件，含有調整整個顯示物件中顏色的值&lt;br /&gt;&lt;strong&gt;matrix&lt;/strong&gt; : Matrix &lt;br /&gt;//Matrix 物件，含有影響顯示物件之縮放、旋轉和轉譯的值。&lt;br /&gt;&lt;br /&gt;//另外還有三個重要的唯讀屬性&lt;br /&gt;&lt;strong&gt;concatenatedColorTransform&lt;/strong&gt; : ColorTransform &lt;br /&gt;//[read-only] ColorTransform 物件，代表套用至顯示物件及其所有父物件之根層級中的混合顏色轉換&lt;br /&gt;&lt;strong&gt;concatenatedMatrix&lt;/strong&gt; : Matrix &lt;br /&gt;//[read-only] Matrix 物件，代表顯示物件及其所有父物件之根層級中的混合變形矩陣。&lt;br /&gt;&lt;strong&gt;pixelBounds&lt;/strong&gt; : Rectangle &lt;br /&gt;//[read-only] Rectangle 物件，定義「舞台」上顯示物件的矩形邊界。&lt;br /&gt;&lt;br /&gt;至於 ColorTransform 跟 Matrix 類別&lt;br /&gt;下面繼續分別討論嚕&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-1429251142826868334?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/1429251142826868334/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=1429251142826868334' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1429251142826868334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1429251142826868334'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/01/transform.html' title='顯示物件的變色與變形-Transform'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-9015445772416887917</id><published>2009-01-10T11:24:00.010+08:00</published><updated>2009-01-19T15:36:45.890+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>FLASH載入的圖片縮放後品質不佳之解決辦法</title><content type='html'>FLASH載入的圖片縮放後品質不佳&lt;br /&gt;是一個很容易就會發生的問題&lt;br /&gt;&lt;br /&gt;在此要先了解一下 ActionScript 3.0 中處理點陣圖影像的主要類別: Bitmap 和 BitmapData &lt;br /&gt;Bitmap 類別可以用來在螢幕上顯示點陣圖影像&lt;br /&gt;BitmapData 類別則用來存取和操作點陣圖的原始影像資料&lt;br /&gt;&lt;br /&gt;如果對圖片品質比較要求的話&lt;br /&gt;可以嘗試以下方法:&lt;br /&gt;&lt;br /&gt;picLdr.contentLoaderInfo.addEventListener(Event.COMPLETE,&lt;br /&gt;　function(event:Event){&lt;br /&gt;　　var pic:Bitmap = event.target.content as Bitmap;&lt;br /&gt;　　pic.smoothing = true; //Bitmap縮放平滑化&lt;br /&gt;　}&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;picLdr 是負責把圖片載入進來的 Loader 類別&lt;br /&gt;透過監聽 contentLoaderInfo 的 Event.COMPLETE 事件&lt;br /&gt;在圖片載入完成時&lt;br /&gt;Loader 的 content 屬性(參照到 Bitmap 物件)&lt;br /&gt;去設定 Bitmap 類別的 smooting 屬性為 true&lt;br /&gt;這樣 flash player 會針對圖片縮放作平滑化處理&lt;br /&gt;&lt;br /&gt;-------------------------------------------------&lt;br /&gt;或是在 Bitmap 實體建立時就利用建構子設定平滑化:&lt;br /&gt;&lt;br /&gt;var bData:BitmapData = new BitmapData(picWidth, picHeight);&lt;br /&gt;bData.draw(displayObj);&lt;br /&gt;//BitmapData.draw 的 source 可以是 BitmapData 或 DisplayObject 物件&lt;br /&gt;var bmp:Bitmap = new Bitmap(bData,PixelSnapping.AUTO, true);&lt;br /&gt;//Bitmap建構子的Optional Params&lt;br /&gt;//第三個參數可以指定smooting 屬性&lt;br /&gt;&lt;br /&gt;=================================================&lt;br /&gt;&lt;br /&gt;同場加映: FLV 視訊播放品質不佳怎麼辦??&lt;br /&gt;&lt;br /&gt;Flash Player 9 update 3 以上支援使用 Mipmap 映射最佳化執行階段的呈現品質與效能&lt;br /&gt;如果將 Video 物件的 smoothing 屬性設為 true&lt;br /&gt;Flash Player 會在播放視訊時使用 Mip 映射 (Mipmapping) 最佳化&lt;br /&gt;VideoPlayer 物件為 Video 物件的子系, 而 FLVPlayback 有包覆 VideoPlayer 物件&lt;br /&gt;因此對 FLVPlayback 而言要使用 smoothing 屬性去做平滑化播放應該也是可以達成的&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-9015445772416887917?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/9015445772416887917/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=9015445772416887917' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/9015445772416887917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/9015445772416887917'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2009/01/flash.html' title='FLASH載入的圖片縮放後品質不佳之解決辦法'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-6824489340362888113</id><published>2008-10-24T10:29:00.007+08:00</published><updated>2008-11-20T14:05:22.625+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><category scheme='http://www.blogger.com/atom/ns#' term='串流影音'/><title type='text'>FLASH影音在IIS server上跑不出來嗎</title><content type='html'>開發好的flash影音播放器放上IIS server卻跑不出來嗎?&lt;br /&gt;最近我也碰到了這個說大不大&lt;br /&gt;但還真有點麻煩的問題&lt;br /&gt;這有可能是由於 IIS 不認識 flash 影音檔的格式(FLV, MP4)所造成的&lt;br /&gt;&lt;br /&gt;首先請確定一下 IIS 的版本&lt;br /&gt;Windows XP 使用的是 IIS 5(此版本不會有這問題)&lt;br /&gt;Windows 2003 使用的是 IIS 6&lt;br /&gt;Windows Vista 使用的是 IIS 7&lt;br /&gt;&lt;br /&gt;若 server 運行的是 IIS 6(及之後版本) 的話&lt;br /&gt;請嘗試下面的方法:&lt;br /&gt;&lt;br /&gt;1. 進入IIS管理介面&lt;br /&gt;2. 選擇要支援影音的網站或目錄, 按右鍵選"內容"&lt;br /&gt;3. 在 "HTTP 標頭" 標籤找到 "MIME 對應" 按下 "檔案類型"&lt;br /&gt;4. 新增要支援的 MIME Type, 例如:&lt;br /&gt;副檔名:".flv" &lt;br /&gt;MIME:"video/x-flv" 或 "flv-application/octet-stream"&lt;br /&gt;&lt;br /&gt;副檔名:".mp4" &lt;br /&gt;MIME:"video/x-mp4" 或 "application/octet-stream"&lt;br /&gt;&lt;br /&gt;這樣應該就可以了&lt;br /&gt;其他檔案格式要加入的話&lt;br /&gt;也可以在網路上搜尋到 MIME 的值然後從相同地方設定&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-6824489340362888113?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/6824489340362888113/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=6824489340362888113' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/6824489340362888113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/6824489340362888113'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/10/flashiis-server.html' title='FLASH影音在IIS server上跑不出來嗎'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-663130897386809784</id><published>2008-10-14T18:30:00.001+08:00</published><updated>2008-10-14T18:30:59.506+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><category scheme='http://www.blogger.com/atom/ns#' term='串流影音'/><title type='text'>串流影音播放-FLVPlayback 類別-屬性-3</title><content type='html'>-----------------------------------------&lt;br /&gt;播放控制項相關:&lt;br /&gt;-----------------------------------------&lt;br /&gt;&lt;strong&gt;backButton&lt;/strong&gt; : Sprite //BackButton 播放控制項。&lt;br /&gt;&lt;strong&gt;bufferingBar&lt;/strong&gt; : Sprite //緩衝列控制項。&lt;br /&gt;&lt;strong&gt;forwardButton&lt;/strong&gt; : Sprite //「快轉」按鈕控制項。&lt;br /&gt;&lt;strong&gt;fullScreenButton&lt;/strong&gt; : Sprite //FullScreen 按鈕控制項。&lt;br /&gt;&lt;strong&gt;muteButton&lt;/strong&gt; : Sprite //「靜音」按鈕控制項。&lt;br /&gt;&lt;strong&gt;pauseButton&lt;/strong&gt; : Sprite //「暫停」按鈕控制項。&lt;br /&gt;&lt;strong&gt;playButton&lt;/strong&gt; : Sprite //「播放」按鈕控制項。&lt;br /&gt;&lt;strong&gt;playPauseButton&lt;/strong&gt; : Sprite //「播放/暫停」按鈕控制項。&lt;br /&gt;&lt;strong&gt;seekBar&lt;/strong&gt; : Sprite //SeekBar 控制項。&lt;br /&gt;&lt;strong&gt;stopButton&lt;/strong&gt; : Sprite //「停止」按鈕控制項。&lt;br /&gt;&lt;strong&gt;volumeBar&lt;/strong&gt; : Sprite //音量列控制項。&lt;br /&gt;&lt;br /&gt;-----------------------------------------&lt;br /&gt;播放控制項屬性相關:&lt;br /&gt;-----------------------------------------&lt;br /&gt;&lt;strong&gt;skin&lt;/strong&gt; : String &lt;br /&gt;//字串，會指定外觀元素 SWF 檔的 URL。&lt;br /&gt;&lt;strong&gt;skinAutoHide&lt;/strong&gt; : Boolean &lt;br /&gt;//Boolean 值，如果為 true，則當滑鼠移到視訊以外的區域時，組件外觀元素會被隱藏起來。&lt;br /&gt;&lt;strong&gt;skinBackgroundAlpha&lt;/strong&gt; : Number &lt;br /&gt;//外觀元素之背景的 Alpha。&lt;br /&gt;&lt;strong&gt;skinBackgroundColor&lt;/strong&gt; : uint &lt;br /&gt;//外觀元素的背景顏色 (0xRRGGBB)。&lt;br /&gt;&lt;strong&gt;skinFadeTime&lt;/strong&gt; : int &lt;br /&gt;//進行隱藏或顯示時，外觀元素淡入或淡出所花費的時間，以毫秒為單位。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;bufferingBarHidesAndDisablesOthers&lt;/strong&gt;: Boolean &lt;br /&gt;//設定為 true 則會隱藏 SeekBar 控制項，並在 FLV 檔處於緩衝狀態時停用 Play、Pause、PlayPause、BackButton 和 ForwardButton 控制項。&lt;br /&gt;&lt;strong&gt;fullScreenBackgroundColor&lt;/strong&gt; : uint &lt;br /&gt;//在全螢幕佔用模式中使用的背景顏色。&lt;br /&gt;&lt;strong&gt;fullScreenSkinDelay&lt;/strong&gt; : int &lt;br /&gt;//會指定隱藏外觀元素的延遲時間，以毫秒為單位。&lt;br /&gt;&lt;strong&gt;fullScreenTakeOver&lt;/strong&gt; : Boolean &lt;br /&gt;//當舞台進入全螢幕模式時，FLVPlayback 組件就會位於所有內容的最上方，而且佔用整個螢幕。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-663130897386809784?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/663130897386809784/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=663130897386809784' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/663130897386809784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/663130897386809784'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/10/flvplayback-3.html' title='串流影音播放-FLVPlayback 類別-屬性-3'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-6092009073359705189</id><published>2008-10-14T18:29:00.000+08:00</published><updated>2008-10-14T18:30:37.005+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><category scheme='http://www.blogger.com/atom/ns#' term='串流影音'/><title type='text'>串流影音播放-FLVPlayback 類別-屬性-2</title><content type='html'>-----------------------------------------&lt;br /&gt;播放狀態相關屬性:&lt;br /&gt;-----------------------------------------&lt;br /&gt;&lt;strong&gt;state&lt;/strong&gt; : String &lt;br /&gt;//[read-only] 字串，會指定組件的狀態。&lt;br /&gt;&lt;strong&gt;bytesLoaded&lt;/strong&gt; : uint &lt;br /&gt;//[read-only] 數字，會指出 HTTP 下載作業的完成度，以位元組數目表示。 &lt;br /&gt;&lt;strong&gt;bytesTotal&lt;/strong&gt; : uint &lt;br /&gt;//[read-only] 數字，會指定 HTTP 下載作業的已下載總位元組數。&lt;br /&gt;&lt;strong&gt;stateResponsive&lt;/strong&gt; : Boolean &lt;br /&gt;//[read-only] Boolean 值，若是有反應的狀態則為 true。&lt;br /&gt;&lt;strong&gt;stopped&lt;/strong&gt; : Boolean &lt;br /&gt;//[read-only] Boolean 值，當 FLVPlayback 實體的狀態為 stopped 時則為 true。&lt;br /&gt;&lt;strong&gt;metadataLoaded&lt;/strong&gt; : Boolean &lt;br /&gt;//[read-only] 如果已找到並處理中繼資料封包，或 FLV 檔在沒有中繼資料封包的情況下編碼，則為 true&lt;br /&gt;&lt;strong&gt;paused&lt;/strong&gt; : Boolean //[read-only] FLV 檔處於暫停狀態時為 true&lt;br /&gt;&lt;strong&gt;playing&lt;/strong&gt; : Boolean //[read-only] FLV 檔處於播放狀態時為 true&lt;br /&gt;&lt;strong&gt;buffering&lt;/strong&gt; : Boolean //[read-only] 視訊處於緩衝狀態時為 true&lt;br /&gt;&lt;strong&gt;scrubbing&lt;/strong&gt; : Boolean //[read-only] 使用 SeekBar 進行拖曳時為 true；否則為 false&lt;br /&gt;&lt;strong&gt;isLive&lt;/strong&gt; : Boolean //當視訊串流處於即時狀態則為 true&lt;br /&gt;&lt;strong&gt;isRTMP&lt;/strong&gt; : Boolean //[read-only] 使用 RTMP 從 FMS 串流處理 FLV 檔時則為 true&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-----------------------------------------&lt;br /&gt;縮放與對齊相關屬性:&lt;br /&gt;-----------------------------------------&lt;br /&gt;&lt;strong&gt;registrationHeight&lt;/strong&gt; : Number //視訊的高度。&lt;br /&gt;&lt;strong&gt;registrationWidth&lt;/strong&gt; : Number //視訊的寬度。&lt;br /&gt;&lt;strong&gt;registrationX&lt;/strong&gt; : Number //視訊的 x 座標。&lt;br /&gt;&lt;strong&gt;registrationY&lt;/strong&gt; : Number //視訊的 y 座標。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;align&lt;/strong&gt; : String&lt;br /&gt;//當 scaleMode 屬性設定為 VideoScaleMode.MAINTAIN_ASPECT_RATIO 或 VideoScaleMode.NO_SCALE 時，會指定視訊版面。預設值為 VideoAlign.CENTER。 &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;scaleMode&lt;/strong&gt; : String &lt;br /&gt;//會指定載入視訊之後將如何調整大小。&lt;br /&gt;// 預設值為 VideoScaleMode.MAINTAIN_ASPECT_RATIO 會將比例維持在 registrationX、registrationY、registrationWidth 和 registrationHeight 所定義的矩形以內。&lt;br /&gt;// VideoScaleMode.NO_SCALE 會讓視訊大小自動調整為來源 FLV 檔的尺寸。&lt;br /&gt;// VideoScaleMode.EXACT_FIT 會導致忽略來源 FLV 檔的尺寸，並且拉伸視訊以符合由 registrationX、registrationY、registrationWidth 和 registrationHeight 所定義的矩形。&lt;br /&gt;//如果在 FLV 檔載入之後設定此屬性，就會立即開始自動配置。 這些值來自 VideoScaleMode。&lt;br /&gt; &lt;br /&gt;&lt;strong&gt;height&lt;/strong&gt; : Number //數字，會指定 FLVPlayback 實體的高度。&lt;br /&gt;&lt;strong&gt;width&lt;/strong&gt; : Number //數字，會指定「舞台」上 FLVPlayback 實體的寬度。&lt;br /&gt;&lt;strong&gt;x&lt;/strong&gt; : Number //數字，用以指定視訊播放程式的水平位置，以像素為單位。&lt;br /&gt;&lt;strong&gt;y&lt;/strong&gt; : Number //數字，用以指定視訊播放程式的垂直位置，以像素為單位。&lt;br /&gt;&lt;strong&gt;scaleX&lt;/strong&gt; : Number //代表水平縮放的數字。&lt;br /&gt;&lt;strong&gt;scaleY&lt;/strong&gt; : Number //代表垂直縮放的數字。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;preferredHeight&lt;/strong&gt; : int &lt;br /&gt;&lt;strong&gt;preferredWidth&lt;/strong&gt; : int &lt;br /&gt;//[read-only] 來源 FLV 檔的高度與寬度。在 ready 事件啟動時才會生效。&lt;br /&gt;//如果 scaleMode 屬性的值為 VideoScaleMode.MAINTAIN_ASPECT_RATIO 或 VideoScaleMode.NO_SCALE，則最佳作法是在傳送 layout 事件之後讀取該值。&lt;br /&gt;//如果資訊尚無法取得，此屬性會傳回 -1&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-6092009073359705189?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/6092009073359705189/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=6092009073359705189' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/6092009073359705189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/6092009073359705189'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/10/flvplayback-2.html' title='串流影音播放-FLVPlayback 類別-屬性-2'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-5650648680167749754</id><published>2008-10-14T09:27:00.013+08:00</published><updated>2008-10-16T14:21:14.695+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><category scheme='http://www.blogger.com/atom/ns#' term='串流影音'/><title type='text'>串流影音播放-FLVPlayback 類別-屬性-1</title><content type='html'>FLVPlayback 類別 繼承自 Sprite，並包覆 VideoPlayer 物件&lt;br /&gt;(在AS 2.0也有此類別, 但僅支援 FLV 編碼格式, &lt;br /&gt;若要支援 H.264 必須使用 3.0 的 FLVPlayback 類別)&lt;br /&gt;(若要播放 H.264 影片, 需要 Flash Player 9.0.115.0之後的版本)&lt;br /&gt;&lt;br /&gt;使用方法:&lt;br /&gt;元件庫內要新增 FLVPlayback 組件&lt;br /&gt;然後 import fl.video.FLVPlayback;&lt;br /&gt;&lt;br /&gt;屬性:(摘要)&lt;br /&gt;-----------------------------------------&lt;br /&gt;重要屬性:&lt;br /&gt;-----------------------------------------&lt;br /&gt;&lt;strong&gt;source&lt;/strong&gt; : String &lt;br /&gt;//指定串流處理之 FLV 檔的 URL，以及串流的方式。&lt;br /&gt;&lt;strong&gt;autoPlay&lt;/strong&gt; : Boolean &lt;br /&gt;//Boolean 值，預設值為 true，在設定 source 屬性之後自動開始播放。若設定為 false，則 FLV 檔會載入，等到呼叫 play() 或 playWhenEnoughDownloaded() 後才開始播放。&lt;br /&gt;//將 autoPlay 屬性設為 true，再將 source 屬性設為 URL，效果就和呼叫 play(URL) 一樣。&lt;br /&gt;//呼叫 load(URL)，效果如同將 source 屬性設為 URL，加上 autoPlay 設為 false。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;autoRewind&lt;/strong&gt; : Boolean &lt;br /&gt;Boolean 值，如果為 true，則會在播放停止時讓 FLV 檔倒帶到「影格 1」，這可能是因為播放程式到達串流的結尾或者呼叫了 stop() 方法所造成的。&lt;br /&gt;&lt;strong&gt;cuePoints&lt;/strong&gt; : Array &lt;br /&gt;//[write-only] 陣列，會描述 ActionScript 提示點以及停用的內嵌 FLV 檔提示點。&lt;br /&gt;&lt;strong&gt;metadata&lt;/strong&gt; : Object &lt;br /&gt;//[read-only] 物件，它是從 NetSteam.onMetaData() 回呼方法之呼叫接收的中繼資料資訊封包 (如果有的話)。&lt;br /&gt;&lt;strong&gt;preview&lt;/strong&gt; : String &lt;br /&gt;//[write-only] 即時預覽。會讀入 PNG 檔案以供預覽。&lt;br /&gt;&lt;strong&gt;totalTime&lt;/strong&gt; : Number &lt;br /&gt;數字，表示視訊的總播放時間，以秒為單位。&lt;br /&gt;&lt;strong&gt;bufferTime&lt;/strong&gt; : Number &lt;br /&gt;//數字，用以指定視訊串流開始播放之前，記憶體中緩衝的秒數。&lt;br /&gt;&lt;strong&gt;bitrate&lt;/strong&gt; : Number &lt;br /&gt;數字，用以指定傳輸 FLV 檔的每秒位元數。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;activeVideoPlayerIndex&lt;/strong&gt; : uint  // 指定哪一個視訊播放程式實體會受到 API 影響。預設值為 0&lt;br /&gt;&lt;strong&gt;visibleVideoPlayerIndex&lt;/strong&gt; : uint &lt;br /&gt;//用來管理多個 FLV 檔串流。&lt;br /&gt;&lt;strong&gt;ncMgr&lt;/strong&gt; : INCManager &lt;br /&gt;//[read-only] INCManager 物件，讓使用者能夠存取實作 INCManager 的類別實體，即 NCManager 類別的介面。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;idleTimeout&lt;/strong&gt; : Number &lt;br /&gt;//Flash 因為播放暫停或停止而中斷 Flash Media Server (FMS) 閒置連線之前的時間長度，以毫秒為單位。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;playheadPercentage&lt;/strong&gt; : Number &lt;br /&gt;//數字，指定目前的 playheadTime 做為 totalTime 屬性的百分比。&lt;br /&gt;&lt;strong&gt;playheadTime&lt;/strong&gt; : Number &lt;br /&gt;//數字，表示目前播放磁頭時間或位置，以秒為單位，可以是分數值。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;soundTransform&lt;/strong&gt; : SoundTransform &lt;br /&gt;//存取 VideoPlayer.soundTransform 屬性以控制聲音。&lt;br /&gt;&lt;strong&gt;volume&lt;/strong&gt; : Number &lt;br /&gt;//數字，會指出音量控制項設定，允許的範圍為 0 到 1。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;seekToPrevOffset&lt;/strong&gt; : Number &lt;br /&gt;//秒數，seekToPrevNavCuePoint() 方法會用此屬性來比較它的時間與之前的提示點時間。&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;seekBarInterval&lt;/strong&gt; : Number &lt;br /&gt;//數字，用以指定來回拖曳 SeekBar 控制點時，執行檢查的間隔時間，以毫秒為單位。&lt;br /&gt;&lt;strong&gt;playheadUpdateInterval&lt;/strong&gt; : Number &lt;br /&gt;//數字，表示每個 playheadUpdate 事件之間的時間長度，以毫秒為單位。&lt;br /&gt;&lt;strong&gt;progressInterval&lt;/strong&gt; : Number &lt;br /&gt;//數字，表示每個 progress 事件之間的時間長度，以毫秒為單位。&lt;br /&gt;&lt;strong&gt;seekBarScrubTolerance&lt;/strong&gt; : Number &lt;br /&gt;//數字，會指定使用者在更新動作發生之前，可將 SeekBar 控制點移動多遠的距離。&lt;br /&gt;&lt;strong&gt;volumeBarInterval&lt;/strong&gt; : Number &lt;br /&gt;//數字，會指定拖曳時檢查音量列控制點位置的頻率，以毫秒為單位。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-5650648680167749754?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/5650648680167749754/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=5650648680167749754' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/5650648680167749754'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/5650648680167749754'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/10/flvplayback.html' title='串流影音播放-FLVPlayback 類別-屬性-1'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-4489607544792565326</id><published>2008-09-25T15:11:00.003+08:00</published><updated>2008-09-25T15:33:45.640+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>AS 3.0 的深度管理</title><content type='html'>AS 3.0 中&lt;br /&gt;能夠管理物件深度的類別一定是 DisplayObjectContainer 的子類別&lt;br /&gt;(Loader, Sprite, Stage)&lt;br /&gt;&lt;br /&gt;以下列出 DisplayObjectContainer 類別中關於深度管理的 function:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;addChildAt(child:DisplayObject, index:int)&lt;/strong&gt;:DisplayObject&lt;br /&gt;&lt;strong&gt;removeChildAt(index:int)&lt;/strong&gt;:DisplayObject &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;getChildAt(index:int)&lt;/strong&gt;:DisplayObject&lt;br /&gt;&lt;strong&gt;getChildIndex(child:DisplayObject)&lt;/strong&gt;:int &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;setChildIndex(child:DisplayObject, index:int)&lt;/strong&gt;:void &lt;br /&gt;//變更 child 的深度為 index&lt;br /&gt;//若 child 原本在 index 深度原本的物件之下, 則 child 會變成在它之上&lt;br /&gt;//若 child 原本在 index 深度原本的物件之上, 則 child 會變成在它之下&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;swapChildren(child1:DisplayObject, child2:DisplayObject)&lt;/strong&gt;:void &lt;br /&gt;//交換 child1 與 child2 的深度&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;swapChildrenAt(index1:int, index2:int)&lt;/strong&gt;:void &lt;br /&gt;//交換深度在 index1 與 index2 的物件的深度&lt;br /&gt;&lt;br /&gt;範例:&lt;br /&gt;若要將 mc 中的 child 物件置於最上方&lt;br /&gt;可以這樣寫&lt;br /&gt;mc.setChildIndex(child, mc.numChildren-1);&lt;br /&gt;//深度由下而上, 從 0 開始, 故 numChildren-1 即為 mc 中最上面的深度&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-4489607544792565326?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/4489607544792565326/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=4489607544792565326' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4489607544792565326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4489607544792565326'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/09/as-30.html' title='AS 3.0 的深度管理'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-5509929751619955955</id><published>2008-09-22T10:32:00.007+08:00</published><updated>2008-11-20T14:07:22.474+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>與聲音相關的類別-1</title><content type='html'>Sound 類別 &lt;br /&gt;負責載入聲音及播放聲音&lt;br /&gt;&lt;br /&gt;大致有以下屬性:&lt;br /&gt;&lt;strong&gt;bytesLoaded&lt;/strong&gt; : uint  //目前可用的位元組數目&lt;br /&gt;&lt;strong&gt;bytesTotal&lt;/strong&gt; : int   //位元組總數&lt;br /&gt;&lt;strong&gt;id3&lt;/strong&gt; : ID3Info   //存取 MP3 檔的 id3 資訊&lt;br /&gt;&lt;strong&gt;isBuffering&lt;/strong&gt; : Boolean   //傳回外部 MP3 檔的緩衝狀態&lt;br /&gt;&lt;strong&gt;length&lt;/strong&gt; : Number    //長度，以毫秒為單位。 Sound &lt;br /&gt;&lt;strong&gt;url&lt;/strong&gt; : String &lt;br /&gt;&lt;br /&gt;方法:&lt;br /&gt;&lt;strong&gt;Sound(stream:URLRequest = null, context:SoundLoaderContext = null)&lt;/strong&gt;&lt;br /&gt;//建立新的 Sound 物件&lt;br /&gt;&lt;strong&gt;close():void&lt;/strong&gt;&lt;br /&gt;//關閉串流，因而導致資料的下載作業終止&lt;br /&gt;&lt;strong&gt;load(stream:URLRequest, context:SoundLoaderContext = null):void &lt;/strong&gt;&lt;br /&gt;//從指定 URL 載入外部 MP3 檔的作業&lt;br /&gt;&lt;strong&gt;play(startTime:Number = 0, loops:int = 0, sndTransform:SoundTransform = null):SoundChannel &lt;/strong&gt;&lt;br /&gt;//產生新的 SoundChannel 物件，以便播放聲音。 &lt;br /&gt;&lt;br /&gt;事件:&lt;br /&gt;&lt;strong&gt;complete&lt;/strong&gt;  //在順利載入資料時傳送&lt;br /&gt;&lt;strong&gt;id3&lt;/strong&gt;  //當 ID3 資料可用於 MP3 聲音時，由 Sound 物件傳送&lt;br /&gt;&lt;strong&gt;ioError&lt;/strong&gt;  //發生輸入/輸出錯誤，因而導致載入作業失敗時傳送&lt;br /&gt;&lt;strong&gt;open&lt;/strong&gt;  //在載入作業開始時傳送&lt;br /&gt;&lt;strong&gt;progress&lt;/strong&gt;  //在載入作業進行中收到資料時傳送&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;但要控制聲音的播放&lt;br /&gt;則需要使用其他類別&lt;br /&gt;&lt;br /&gt;SoundChannel ==&gt; 控制聲音的播放, 停止與多聲道混音&lt;br /&gt;SoundTransform ==&gt; 控制音量與左右相位&lt;br /&gt;&lt;br /&gt;-------------------------------------------------------&lt;br /&gt;&lt;br /&gt;SoundChannel&lt;br /&gt;屬性:&lt;br /&gt;position : Number &lt;br /&gt;//[read-only] 播放磁頭目前在聲音中的位置&lt;br /&gt;soundTransform : SoundTransform &lt;br /&gt;//指定給聲道的 SoundTransform 物件&lt;br /&gt;&lt;br /&gt;leftPeak : Number  //[read-only] 左聲道目前音量，從 0 ~ 1 &lt;br /&gt;rightPeak : Number  [read-only] 右聲道目前音量，從 0 ~ 1 &lt;br /&gt;&lt;br /&gt;方法:&lt;br /&gt;stop():void   //會停止在聲道中播放的聲音。 &lt;br /&gt;&lt;br /&gt;-------------------------------------------------------&lt;br /&gt;&lt;br /&gt;SoundTransform&lt;br /&gt;屬性:&lt;br /&gt;pan : Number &lt;br /&gt;//聲音的左至右相位，範圍介於 -1(左) ~ 1(右) 之間&lt;br /&gt;volume : Number &lt;br /&gt;//音量，範圍介於 0 ~ 1 之間&lt;br /&gt;&lt;br /&gt;leftToLeft : Number  //介於 0 ~ 1 之間的值，指定在左喇叭中播放左邊輸入的量&lt;br /&gt;leftToRight : Number  //介於 0 ~ 1 之間的值，指定在右喇叭中播放左邊輸入的量&lt;br /&gt;rightToLeft : Number  //介於 0 ~ 1 之間的值，指定在左喇叭中播放右邊輸入的量&lt;br /&gt;rightToRight : Number  //介於 0 ~ 1 之間的值，指定在右喇叭中播放右邊輸入的量&lt;br /&gt;&lt;br /&gt;方法:&lt;br /&gt;SoundTransform(vol:Number = 1, panning:Number = 0)&lt;br /&gt;//會建立 SoundTransform 物件&lt;br /&gt;&lt;br /&gt;--------------------------------------------------&lt;br /&gt;使用範例:&lt;br /&gt;//背景音樂&lt;br /&gt;var bgm1File:URLRequest = new URLRequest("sound/bgm1.mp3");&lt;br /&gt;var bgm1Sound:Sound = new Sound();&lt;br /&gt;var bgml:SoundChannel;&lt;br /&gt;var bgm1Transform:SoundTransform = new SoundTransform(1,0);&lt;br /&gt;bgm1Sound.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);&lt;br /&gt;bgm1Sound.load(bgm1File);&lt;br /&gt;bgml = bgm1Sound.play(0,999,bgm1Transform);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-5509929751619955955?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/5509929751619955955/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=5509929751619955955' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/5509929751619955955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/5509929751619955955'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/09/1.html' title='與聲音相關的類別-1'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-564081566648314425</id><published>2008-09-09T17:49:00.005+08:00</published><updated>2008-09-09T18:18:36.747+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>ExternalInterface</title><content type='html'>//ExternalInterface 類別要求使用者的網頁瀏覽器必須支援 ActiveX&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;public static function addCallback(functionName:String, closure:Function):void &lt;/strong&gt;&lt;br /&gt;//將第二個參數(flash 內的 function) 以第一個參數(容器叫用函數所依據的名稱)對外註冊&lt;br /&gt;//所以網頁的 javascript 可以呼叫 flash 內的 function&lt;br /&gt;例:&lt;br /&gt;try{&lt;br /&gt;  if(!ExternalInterface.available){&lt;br /&gt;    throw Error("不支援外部呼叫");&lt;br /&gt;  }else{&lt;br /&gt;    ExternalInterface.addCallback(外部呼叫的function名稱, flash內部的function);&lt;br /&gt;  }&lt;br /&gt;}catch(err:Error){&lt;br /&gt;  msgText.text = err.toString();  &lt;br /&gt;}&lt;br /&gt;//網頁中要呼叫, 則透過javascript指向flash物件, 再呼叫方法&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;public static function call(functionName:String, ... arguments):* &lt;/strong&gt;&lt;br /&gt;//如果容器是 HTML 網頁，則此方法會叫用 script 元素中的 JavaScript 函數&lt;br /&gt;//如果無法取得想要的函數，會傳回 null；否則會傳回函數所提供的值&lt;br /&gt;//「不」允許遞迴；遞迴呼叫會產生 null 回應&lt;br /&gt;例:&lt;br /&gt;try{&lt;br /&gt;  if(!ExternalInterface.available){&lt;br /&gt;    throw Error("不支援外部呼叫");&lt;br /&gt;  }else{&lt;br /&gt;    ExternalInterface.call(外部的function, 零或多個參數);&lt;br /&gt;  }&lt;br /&gt;}catch(err:Error){&lt;br /&gt;  msgText.text = err.toString();  &lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-564081566648314425?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/564081566648314425/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=564081566648314425' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/564081566648314425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/564081566648314425'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/09/externalinterface.html' title='ExternalInterface'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-7284598711370287781</id><published>2008-09-09T17:21:00.002+08:00</published><updated>2008-09-09T17:42:46.935+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>flashvars in AS3--stage.loaderInfo.parameters</title><content type='html'>parameters 屬性[read-only]會取代 AS2.0 做為Main TimeLine屬性提供參數給 SWF 使用&lt;br /&gt;stage.loaderInfo.parameters 兩個參數來源為：&lt;br /&gt;主要 SWF 檔之 URL 的查詢字串，以及 FlashVars HTML 參數值 (只會影響主要 SWF 檔)&lt;br /&gt;(使用 AS2.0 的 SWF 檔，其 Loader 物件的 parameters 為 null;&lt;br /&gt;Loader 物件包含的 SWF 檔使用 AS3.0，其屬性值才不會是 null)&lt;br /&gt;&lt;br /&gt;透過 stage.loaderInfo.parameters 取得 flashvars &lt;br /&gt;其型態為 URL-encoded 字串&lt;br /&gt;故使用 for in 迴圈取出 key 與 value&lt;br /&gt;可用 switch 針對各參數做處理&lt;br /&gt;本例將值放入vars 陣列內:&lt;br /&gt;&lt;br /&gt;var flashvars:Object = stage.loaderInfo.parameters;&lt;br /&gt;var vars:Object = [];&lt;br /&gt;var k:String;&lt;br /&gt;for(k in flashvars){&lt;br /&gt;  vars.push({key:k, value:flashvars[k]});&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-7284598711370287781?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/7284598711370287781/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=7284598711370287781' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7284598711370287781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7284598711370287781'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/09/flashvars-in-as3-stageloaderinfoparamet.html' title='flashvars in AS3--stage.loaderInfo.parameters'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-290638592304987845</id><published>2008-08-13T17:36:00.001+08:00</published><updated>2008-08-13T17:37:59.325+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>ActionScript 3.0 Compiler Errors 代碼與說明</title><content type='html'>中文&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flash/9.0_tw/ActionScriptLangRefV3/compilerErrors.html"&gt;http://livedocs.adobe.com/flash/9.0_tw/ActionScriptLangRefV3/compilerErrors.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;英文&lt;br /&gt;&lt;a href="http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/compilerErrors.html"&gt;http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/compilerErrors.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-290638592304987845?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/290638592304987845/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=290638592304987845' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/290638592304987845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/290638592304987845'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/08/actionscript-30-compiler-errors.html' title='ActionScript 3.0 Compiler Errors 代碼與說明'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-2688150333120538865</id><published>2008-08-09T23:42:00.009+08:00</published><updated>2008-08-10T00:07:11.398+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>ConnectionString 與 Data Provider</title><content type='html'>&lt;table&gt;&lt;tr&gt;&lt;th scope="col"&gt;\&lt;/th&gt;&lt;th scope="col"&gt;ODBC&lt;/th&gt;&lt;th scope="col"&gt;OleDb&lt;/th&gt;&lt;th scope="col"&gt;SqlClient&lt;/th&gt;&lt;th scope="col"&gt;OracleClient&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;資料來源&lt;/th&gt;&lt;td&gt;Server&lt;/td&gt;&lt;td&gt;Data Source&lt;/td&gt;&lt;td&gt;Server / &lt;br /&gt;Data Source&lt;/td&gt;&lt;td&gt;Server / Data Source&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;連線帳號&lt;/th&gt;&lt;td&gt;UID&lt;/td&gt;&lt;td&gt;User ID&lt;/td&gt;&lt;td&gt;UID / &lt;br /&gt;User ID&lt;/td&gt;&lt;td&gt;User ID&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;連線密碼&lt;/th&gt;&lt;td&gt;PWD&lt;/td&gt;&lt;td&gt;Password&lt;/td&gt;&lt;td&gt;PWD / &lt;br /&gt;Password&lt;/td&gt;&lt;td&gt;Password&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;Windows&lt;br /&gt;帳號登入&lt;/th&gt;&lt;td&gt;Trusted_&lt;br /&gt;Connection&lt;/td&gt;&lt;td&gt;Integrated Security&lt;/td&gt;&lt;td&gt;Trusted_Connection / &lt;br /&gt;Integrated Security&lt;/td&gt;&lt;td&gt;Integrated Security&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;資料庫&lt;/th&gt;&lt;td&gt;Database&lt;/td&gt;&lt;td&gt;Initial Catalog&lt;/td&gt;&lt;td&gt;Database / &lt;br /&gt;Initial Catalog&lt;/td&gt;&lt;td&gt;無&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;連線集區功能&lt;/th&gt;&lt;td&gt;無&lt;/td&gt;&lt;td&gt;OLE DB Services&lt;/td&gt;&lt;td&gt;Pooling&lt;/td&gt;&lt;td&gt;Pooling&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-2688150333120538865?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/2688150333120538865/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=2688150333120538865' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2688150333120538865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2688150333120538865'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/08/connectionstring.html' title='ConnectionString 與 Data Provider'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-3331488187425911575</id><published>2008-08-05T16:30:00.004+08:00</published><updated>2008-08-05T16:59:35.751+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><title type='text'>執行 aspx 時發生"無法存取 IIS Metabase"</title><content type='html'>為了練習撰寫 ASP.NET 網頁&lt;br /&gt;我用我的電腦裝了 IIS 並測試程式&lt;br /&gt;誰知卻一直無法正常運作&lt;br /&gt;錯誤訊息顯示"無法存取 IIS Metabase"&lt;br /&gt;"描述: 在執行目前 Web 要求的過程中發生未處理的例外情形。請檢閱堆疊追蹤以取得錯誤的詳細資訊，以及在程式碼中產生的位置。 "&lt;br /&gt;"例外詳細資訊: System.Web.Hosting.HostingEnvironmentException: 無法存取 IIS Metabase。 "&lt;br /&gt;&lt;br /&gt;試了好多次都是一樣&lt;br /&gt;為此還是不得不求助 Google&lt;br /&gt;也順利找到解決辦法&lt;br /&gt;記錄在此：&lt;br /&gt;&lt;br /&gt;會發生這錯誤是因為先安裝了 Visual Studio 開發工具&lt;br /&gt;之後才安裝 IIS 因此產生錯誤&lt;br /&gt;所以只要把 ASP.NET 重新安裝並更新 IIS 的 Scriptmap 就可以了&lt;br /&gt;那要怎麼做咧?&lt;br /&gt;&lt;br /&gt;1. 打開命令列視窗&lt;br /&gt;2. 切換路徑到 WINDOWS 安裝路徑下的 \Microsoft.NET\Framework\(版本)&lt;br /&gt;3. 執行 &lt;strong&gt;aspnet_regiis -i&lt;/strong&gt; 並稍等它執行完畢&lt;br /&gt;問題就解決了&lt;br /&gt;( .NET 3.5 是根據 2.0去做擴充的, 所以要去找 2.0 的版本才找得到這檔案)&lt;br /&gt;&lt;br /&gt;補充：&lt;br /&gt;aspnet_regiis 是在本機電腦上安裝及解除安裝 ASP.NET 的管理公用程式&lt;br /&gt;參數 -i 會安裝該版本的 ASP.NET，並且更新位於 IIS Metabase 根目錄的 Scriptmap 以及根目錄下的所有 Scriptmap。較低版本的現有 Scriptmap 都會更新成這個版本。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-3331488187425911575?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/3331488187425911575/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=3331488187425911575' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3331488187425911575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3331488187425911575'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/08/aspx-iis-metabase.html' title='執行 aspx 時發生&quot;無法存取 IIS Metabase&quot;'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-3087077279879160842</id><published>2008-07-19T22:23:00.012+08:00</published><updated>2008-07-20T08:39:50.406+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>delegate 與 Event 標準寫法-初階</title><content type='html'>自訂事件的撰寫步驟頗多, 所以顯得有點小複雜&lt;br /&gt;所以為了便於套用及好記(偷懶!?), 我特別用自己的方式簡化整理一下&lt;br /&gt;請注意我用 Xxxx 代表自訂事件名稱(也許高手會覺得這樣寫很好笑吧....不過我好記就OK嚕)&lt;br /&gt;---------------------------------------------&lt;br /&gt;1)&lt;br /&gt;&lt;strong&gt;public class XxxxEventArgs:EventArgs{ }&lt;/strong&gt;&lt;br /&gt;//說明: 繼承 EventArgs 定義一個自訂事件參數類別, 可以宣告一些到時事件要用的欄位&lt;br /&gt;2)&lt;br /&gt;public &lt;strong&gt;delegate void XxxxHandler(object sender, XxxxEventArgs);&lt;/strong&gt;&lt;br /&gt;//在"事件發佈者類別"的 class 宣告前, 宣告事件處理器&lt;br /&gt;3)&lt;br /&gt;public &lt;strong&gt;event XxxxHandler Xxxx;&lt;/strong&gt;&lt;br /&gt;//宣告 event (在下一步呼叫它時,會將它導向 Handler)&lt;br /&gt;4)&lt;br /&gt;&lt;strong&gt;protected virtual void OnXxxx(XxxxEventArgs args){&lt;br /&gt;    if( Xxxx != null){ Xxxx(this, args);}&lt;br /&gt;}&lt;/strong&gt;&lt;br /&gt;//發佈事件 (將發布者及參數物件傳給 Handler)&lt;br /&gt;5)&lt;br /&gt;&lt;strong&gt;事件發佈者實體.Xxxx += new XxxxHandler(事件發佈者實體_Xxxx);&lt;br /&gt;static void 事件發佈者實體_Xxxx(object sender, XxxxEventArgs args){ 事件處理的code }&lt;/strong&gt;&lt;br /&gt;//在程式中將步驟 2 的 delegate 處理器註冊給實體事件, 並用"事件發佈者實體_Xxxx" 方法處理事件&lt;br /&gt;//使用visual studio的只要寫到 += 後按兩次 Tab 會省事一些...&lt;br /&gt;&lt;br /&gt;6)怎麼觸發自訂的事件呢?&lt;br /&gt;在"觸發者類別"的 method 裡呼叫 OnXxxx(XxxxEventArgs 實體)即可觸發&lt;br /&gt;&lt;br /&gt;同場加映:&lt;br /&gt;使用匿名方法 delegate(參數列){ 事件處理的code }&lt;br /&gt;直接 Invoke 觸發&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-3087077279879160842?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/3087077279879160842/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=3087077279879160842' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3087077279879160842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3087077279879160842'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/07/delegate-eventhandler.html' title='delegate 與 Event 標準寫法-初階'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-4090051289459910725</id><published>2008-07-13T10:09:00.001+08:00</published><updated>2008-07-13T10:48:21.583+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><title type='text'>C# 內建型別與共通型別對照</title><content type='html'>C#內建型別：&lt;br /&gt;整數：sbyte, byte, short, ushort, int, uint, long, ulong&lt;br /&gt;浮點數：float, double, decimal&lt;br /&gt;字元：char&lt;br /&gt;布林：bool&lt;br /&gt;字串：string&lt;br /&gt;物件：object&lt;br /&gt;&lt;br /&gt;&lt;table cellspacing="0" border="1"&gt;&lt;tr&gt;&lt;th&gt;C#內建型別&lt;/th&gt;&lt;th&gt;&amp;quot;共通型別系統&amp;quot;型別&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;short&lt;/th&gt;&lt;td&gt;Systrm.Int16&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;int&lt;/th&gt;&lt;td&gt;System.Int32&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;long&lt;/th&gt;&lt;td&gt;System.Int64&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;float&lt;/th&gt;&lt;td&gt;System.Single&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;double&lt;/th&gt;&lt;td&gt;System.Double&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;decimal&lt;/th&gt;&lt;td&gt;System.Decimal&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;bool&lt;/th&gt;&lt;td&gt;System.Boolean&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;char&lt;/th&gt;&lt;td&gt;System.Char&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;string&lt;/th&gt;&lt;td&gt;System.String&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;object&lt;/th&gt;&lt;td&gt;System.Object&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-4090051289459910725?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/4090051289459910725/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=4090051289459910725' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4090051289459910725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4090051289459910725'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/07/c.html' title='C# 內建型別與共通型別對照'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-1749089855314569643</id><published>2008-07-12T23:37:00.000+08:00</published><updated>2008-07-13T00:23:46.578+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>HTML DOM Location Object</title><content type='html'>屬性：&lt;br /&gt;&lt;table border="1" cellspacing="0"&gt;&lt;tr&gt;&lt;th&gt;Property&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;href&lt;/th&gt;&lt;td&gt;完整 URL&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;protocol&lt;/th&gt;&lt;td&gt;URL 的通訊協定&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;hostname&lt;/th&gt;&lt;td&gt;URL 的域名&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;port&lt;/th&gt;&lt;td&gt; URL 的 port&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;host&lt;/th&gt;&lt;td&gt;URL 的域名與 port&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;pathname&lt;/th&gt;&lt;td&gt;域名後面的路徑(不含參數)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;hash&lt;/th&gt;&lt;td&gt;hash(#)參數的值, (可用於 Anchor )&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;search&lt;/th&gt;&lt;td&gt;? 後面的參數與值&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;方法：&lt;br /&gt;&lt;table cellspacing="0" border="1"&gt;&lt;tr&gt;&lt;th&gt;Method&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;assign(URL)&lt;/th&gt;&lt;td&gt;前往指定的 URL&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;reload()&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;replace(newURL)&lt;/th&gt;&lt;td&gt;將目前頁面換成指定的 URL&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-1749089855314569643?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/1749089855314569643/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=1749089855314569643' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1749089855314569643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1749089855314569643'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/07/html-dom-location-object.html' title='HTML DOM Location Object'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-6829775807879558733</id><published>2008-07-12T23:21:00.003+08:00</published><updated>2008-07-12T23:35:13.851+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>HTML DOM History Object</title><content type='html'>屬性：&lt;br /&gt;length &lt;br /&gt;// history list 的 length&lt;br /&gt;&lt;br /&gt;方法：&lt;br /&gt;&lt;table border="1" cellspacing="0"&gt;&lt;tr&gt;&lt;th&gt;Method&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;back()&lt;/th&gt;&lt;td&gt;回 history list 的上一頁&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;forward()&lt;/th&gt;&lt;td&gt;到 history list 的下一頁&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;go(number|URL)&lt;/th&gt;&lt;td&gt;移動到 history list 的某一頁&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-6829775807879558733?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/6829775807879558733/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=6829775807879558733' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/6829775807879558733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/6829775807879558733'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/07/html-dom-history-object.html' title='HTML DOM History Object'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-873084715163786542</id><published>2008-07-11T16:22:00.001+08:00</published><updated>2008-07-12T23:19:59.097+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>HTML DOM Screen Object</title><content type='html'>&lt;table border="1" cellspacing="0"&gt;&lt;tr&gt;&lt;th&gt;Property&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;width&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;height&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;availWidth&lt;/th&gt;&lt;td&gt;螢幕可視範圍寬(視窗最大化能多寬)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;availHeight&lt;/th&gt;&lt;td&gt;螢幕可視範圍高(視窗最大化能多高)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;deviceXDPI&lt;/th&gt;&lt;td&gt;螢幕的 x 解析度(DPI)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;deviceYDPI&lt;/th&gt;&lt;td&gt;螢幕的 y 解析度(DPI)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;logicalXDPI&lt;/th&gt;&lt;td&gt;螢幕正常 x 解析度(DPI)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;logicalYDPI&lt;/th&gt;&lt;td&gt;螢幕正常 y 解析度(DPI)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;colorDepth&lt;/th&gt;&lt;td&gt;色彩品質(16bits、24bits、32bits...)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;pixelDepth&lt;/th&gt;&lt;td&gt;(此屬性 IE 不支援)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;bufferDepth&lt;/th&gt;&lt;td&gt;色彩緩衝區大小&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;fontSmoothingEnabled&lt;/th&gt;&lt;td&gt;是否設定螢幕字型平滑&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;updateInterval&lt;/th&gt;&lt;td&gt;螢幕的 update interval&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-873084715163786542?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/873084715163786542/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=873084715163786542' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/873084715163786542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/873084715163786542'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/07/html-dom-screen-object.html' title='HTML DOM Screen Object'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-4079896836505373748</id><published>2008-07-11T11:59:00.000+08:00</published><updated>2008-07-11T11:59:24.763+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>window.open() 可設定的視窗屬性</title><content type='html'>&lt;table border="1" cellspacing="0"&gt;&lt;tr&gt;&lt;th&gt;width&lt;/th&gt;&lt;td&gt;最小值 100&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;height&lt;/th&gt;&lt;td&gt;最小值 100&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;left&lt;/th&gt;&lt;td&gt;x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;top&lt;/th&gt;&lt;td&gt;y&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;resizable&lt;/th&gt;&lt;td&gt;Default is yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;titlebar&lt;/th&gt;&lt;td&gt;標題列. Default is yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;location&lt;/th&gt;&lt;td&gt;網址列. Default is yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;toolbar&lt;/th&gt;&lt;td&gt;工具列. Default is yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;menubar&lt;/th&gt;&lt;td&gt;功能表列. Default is yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;directories&lt;/th&gt;&lt;td&gt;連結列. Default is yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;scrollbars&lt;/th&gt;&lt;td&gt;捲動軸. Default is yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;status&lt;/th&gt;&lt;td&gt;狀態列. Default is yes&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;fullscreen&lt;/th&gt;&lt;td&gt;full-screen mode. Default is no.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;channelmode&lt;/th&gt;&lt;td&gt;Default is no&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;同場加映：把視窗放到最大可以這樣寫&lt;br /&gt;window.moveTo(0,0);&lt;br /&gt;window.resizeTo(screen.availWidth, screen.availHeight);&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-4079896836505373748?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/4079896836505373748/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=4079896836505373748' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4079896836505373748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4079896836505373748'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/07/browser-windows.html' title='window.open() 可設定的視窗屬性'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-9043966862636216735</id><published>2008-07-11T09:30:00.009+08:00</published><updated>2008-07-13T00:32:07.202+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>HTML DOM Window Object</title><content type='html'>屬性：&lt;br /&gt;&lt;table cellspacing="0" border="1"&gt;&lt;tr&gt;&lt;th&gt;Property&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;self&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;parent&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;top&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;opener&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;name&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;closed&lt;/th&gt;&lt;td&gt;window 是否已關閉&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;document&lt;/th&gt;&lt;td&gt;Document object&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;toolbar&lt;/th&gt;&lt;td&gt;是否顯示 tool bar&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;scrollbars&lt;/th&gt;&lt;td&gt;是否顯示 scrollbars&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;statusbar&lt;/th&gt;&lt;td&gt;是否顯示 statusbar&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;personalbar&lt;/th&gt;&lt;td&gt;是否顯示工具列&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;defaultStatus&lt;/th&gt;&lt;td&gt;statusbar 的 default text&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;status&lt;/th&gt;&lt;td&gt;statusbar 的內容&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;history&lt;/th&gt;&lt;td&gt;&lt;a href="http://edscb.blogspot.com/2008/07/html-dom-history-object.html"&gt;History object&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;location&lt;/th&gt;&lt;td&gt;&lt;a href="http://edscb.blogspot.com/2008/07/html-dom-location-object.html"&gt;Location object&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;outerheight&lt;/th&gt;&lt;td&gt;整個視窗的 height&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;outerwidth&lt;/th&gt;&lt;td&gt;整個視窗的 width&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;pageXOffset&lt;/th&gt;&lt;td&gt;window 在視窗中的 X 座標&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;pageYOffset&lt;/th&gt;&lt;td&gt;window 在視窗中的 Y 座標&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;length&lt;/td&gt;&lt;/th&gt;&lt;td&gt;該視窗的頁框數量&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;frames[]&lt;/td&gt;&lt;/th&gt;&lt;td&gt;該視窗的頁框陣列&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;方法：&lt;br /&gt;&lt;table cellspacing="0" border="1"&gt;&lt;tr&gt;&lt;th&gt;Method&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;&lt;a href="http://edscb.blogspot.com/2008/07/browser-windows.html"&gt;open([URL,name,specs,replace])&lt;/a&gt;&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;close()&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;print()&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;focus()&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;blur()&lt;/th&gt;&lt;td&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;createPopup()&lt;/th&gt;&lt;td&gt;彈出視窗&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;alert(message)&lt;/th&gt;&lt;td&gt;彈出訊息框&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;confirm(message)&lt;/th&gt;&lt;td&gt;彈出確認框&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;prompt(message,defaultText)&lt;/th&gt;&lt;td&gt;彈出輸入框&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;moveBy()&lt;/th&gt;&lt;td&gt;從目前位置移動視窗&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;moveTo()&lt;/th&gt;&lt;td&gt;移動視窗到指定座標&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;resizeBy()&lt;/th&gt;&lt;td&gt;依目前大小 Resize 視窗&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;resizeTo()&lt;/th&gt;&lt;td&gt;Resize 視窗到指定大小&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;scrollBy()&lt;/th&gt;&lt;td&gt;依目前顯示內容捲動視窗&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;&lt;p&gt;scrollTo(x, y)&lt;/p&gt;&lt;/th&gt;&lt;td&gt;捲動視窗到指定座標&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;setInterval(func,millisec[,"lang"])&lt;/th&gt;&lt;td&gt;循環計時器(每 millisec毫秒執行 func 方法)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;setTimeout(func,millisec[,"lang"])&lt;/th&gt;&lt;td&gt;計時器(每 millisec毫秒執行 func 方法)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;clearInterval(id)&lt;/th&gt;&lt;td&gt;利用 setInterval 回傳的 id 值清除之&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th&gt;clearTimeout(id)&lt;/th&gt;&lt;td&gt;利用 setTimeout 回傳的 id 值清除之&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-9043966862636216735?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/9043966862636216735/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=9043966862636216735' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/9043966862636216735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/9043966862636216735'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/07/html-dom-window-object.html' title='HTML DOM Window Object'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-8812779513536843535</id><published>2008-07-10T15:07:00.004+08:00</published><updated>2008-07-10T15:20:07.394+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>JavaScript 的 RegExp 物件</title><content type='html'>RegExp 是 Regular Expression 的縮寫, 用來當作一種 pattern&lt;br /&gt;&lt;br /&gt;例: &lt;br /&gt;var pattern1 = new RegExp("e"); //用來在字串中找 e 的 pattern&lt;br /&gt;&lt;br /&gt;RegExp 的方法:&lt;br /&gt;test() &lt;br /&gt;//Returns true or false&lt;br /&gt;&lt;br /&gt;exec()&lt;br /&gt;//Returns the text of the found value. If no match is found, it returns null&lt;br /&gt;&lt;br /&gt;compile()&lt;br /&gt;//change both the search pattern, and add or remove the second parameter.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.w3schools.com/jsref/jsref_obj_regexp.asp"&gt;更多正規表示式相關資訊( W3Schools )&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-8812779513536843535?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/8812779513536843535/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=8812779513536843535' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/8812779513536843535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/8812779513536843535'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/07/javascript-regexp.html' title='JavaScript 的 RegExp 物件'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-2998486539719675938</id><published>2008-07-10T14:31:00.002+08:00</published><updated>2008-07-10T14:53:50.700+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>JavaScript 的 Error 物件</title><content type='html'>try..catch..finally:&lt;br /&gt;try{&lt;br /&gt;.....&lt;br /&gt;}catch(e){ //錯誤處理&lt;br /&gt;.....&lt;br /&gt;}finally{&lt;br /&gt;.....&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;throw:&lt;br /&gt;throw(exception);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Error 物件的屬性:&lt;br /&gt;number 錯誤碼(32bit)&lt;br /&gt;message 錯誤說明字串&lt;br /&gt;description 錯誤描述&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;onerror 事件:&lt;br /&gt;onerror=handleErr&lt;br /&gt;function handleErr(msg,url,l)&lt;br /&gt;{&lt;br /&gt;//Handle the error here&lt;br /&gt;return true or false&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-2998486539719675938?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/2998486539719675938/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=2998486539719675938' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2998486539719675938'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2998486539719675938'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/07/javascript-error.html' title='JavaScript 的 Error 物件'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-1731294514358972632</id><published>2008-07-09T21:23:00.006+08:00</published><updated>2008-07-10T14:28:44.273+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>JavaScript 的 函數與物件</title><content type='html'>alert(msg) //彈出 alert 對話框&lt;br /&gt;confirm(msg) //彈出 confirm 對話框, 使用者按"OK"回傳true, 按"cancel"回傳false&lt;br /&gt;prompt(msg, [defaultValue]) //彈出 prompt 字串輸入框&lt;br /&gt;&lt;br /&gt;arguments //參數陣列&lt;br /&gt;prototype //new 出來的物件可指定 prototype&lt;br /&gt;&lt;br /&gt;parseInt() //轉型成整數&lt;br /&gt;parseFloat() //轉型成浮點數&lt;br /&gt;&lt;br /&gt;escape(string) //將字串轉成url編碼&lt;br /&gt;unescape(string) //將url編碼轉回字串&lt;br /&gt;&lt;br /&gt;String 物件:&lt;br /&gt;toLowerCase() //字串轉為小寫&lt;br /&gt;toUpperCase() //字串轉為大寫&lt;br /&gt;charAt(i) //字串的第 i 個字元(由 0 開始)&lt;br /&gt;charCodeAt(i) //字串的第 i 個字元(由 0 開始)的 Unicode 字碼&lt;br /&gt;indexOf(string, i) //搜尋(第 i 個) string 字串的起始索引, 沒找到則傳回-1&lt;br /&gt;lastIndexOf(string) //從最後面開始搜尋字串起始索引, 沒找到則傳回-1&lt;br /&gt;match(string) //若字串包含該 string 則回傳, 若否則為 null (正規表示)&lt;br /&gt;search(string) //同 indexOf(string) (正規表示)&lt;br /&gt;replace(str1, str2) //將字串中所有的 str1 更換成 str2&lt;br /&gt;split(string) //將字串以 string 為分割符號做切割, 回傳的是 Array&lt;br /&gt;subStr(i , length) //從第 i 個字元擷取 length 個字做為字串回傳&lt;br /&gt;subString(i1 , i2) //從第 i1 個字元擷取到(不含)第 i2 個字元做為字串回傳&lt;br /&gt;concat(string) //字串相加, 需搭配 assignment&lt;br /&gt;&lt;br /&gt;Array 物件:&lt;br /&gt;join(separator) //將 array 輸出成字串並以 separator 分隔&lt;br /&gt;reverse() //字串索引反轉&lt;br /&gt;sort() //排序&lt;br /&gt;concat(array) //合併&lt;br /&gt;&lt;br /&gt;Math 物件:&lt;br /&gt;常數屬性:&lt;br /&gt;E / LN2 / LN10 / LOG2E / LOG10E / PI / SQRT1_2 / SQRT2&lt;br /&gt;方法:&lt;br /&gt;max(value1, value2) //傳回較大值&lt;br /&gt;min(value1, value2) //傳回較小值&lt;br /&gt;random() //0~1的亂數&lt;br /&gt;round() //四捨五入&lt;br /&gt;floor() //無條件捨去&lt;br /&gt;ceil() //無條件進位&lt;br /&gt;pow() //次方&lt;br /&gt;sqrt() //平方根&lt;br /&gt;abs() //絕對值&lt;br /&gt;exp() //自然數指數 ex&lt;br /&gt;log() //自然對數&lt;br /&gt;sin() / cos() / tan() / asin() / acos() / atan()  //三角函數&lt;br /&gt;&lt;br /&gt;Date 物件:&lt;br /&gt;getTimezoneOffset() //傳回本地時間與 GMT 時間差, 分為單位&lt;br /&gt;toGMTString() //傳回轉成 GMT 時間的字串&lt;br /&gt;toLocalString()  //傳回轉成本地時間的字串&lt;br /&gt;parse(Date) //傳回 1970年1月1日至本地時間 Date 的毫秒數(類別方法)&lt;br /&gt;UTC(Date)  //傳回 1970年1月1日至 GMT 時間 Date 的毫秒數(類別方法)&lt;br /&gt;getDate() / setDate()&lt;br /&gt;getDay() / setDay()&lt;br /&gt;getMonth() / setMonth()&lt;br /&gt;getFullYear() / setFullYear()&lt;br /&gt;getYear() / setYear()&lt;br /&gt;getHours() / setHours()&lt;br /&gt;getMinutes() / setMinutes()&lt;br /&gt;getSeconds() / setSeconds()&lt;br /&gt;getMilliseconds() / setMilliseconds()&lt;br /&gt;getTime() / setTime() //1970年1月1日至今的秒數&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-1731294514358972632?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/1731294514358972632/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=1731294514358972632' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1731294514358972632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1731294514358972632'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/07/javascript.html' title='JavaScript 的 函數與物件'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-7051955236717962543</id><published>2008-07-09T13:57:00.007+08:00</published><updated>2008-07-09T14:06:15.587+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><title type='text'>JavaScript 的 Event</title><content type='html'>&lt;table border="1" cellspacing="0" bordercolor="#999999"&gt;&lt;tr&gt;&lt;th scope="col"&gt;Event&lt;/th&gt;&lt;th scope="col"&gt;Elements affected&lt;/th&gt;&lt;th scope="col"&gt;What starts this event?&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;onabort&lt;/th&gt;&lt;td&gt;Image&lt;/td&gt;&lt;td&gt;interruption of image loading (user has clicked on another link or STOP in the browser)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;onblur&lt;/th&gt;&lt;td&gt;Button, Checkbox, FileUpload, Frame, Layer, Password, Radio, Reset, Select, Submit, Text, Textarea, Window&lt;/td&gt;&lt;td&gt;when element loses focus (another element is selected)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;onchange&lt;/th&gt;&lt;td&gt;FileUpload, Select, Text, Textarea&lt;/td&gt;&lt;td&gt;change of data inside an element&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;onclick&lt;/th&gt;&lt;td&gt;Button, Document, Checkbox, Link, Radio, Reset, Submit&lt;/td&gt;&lt;td&gt;click on an element&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;ondblclick&lt;/th&gt;&lt;td&gt;Area, Document, Link&lt;/td&gt;&lt;td&gt;double click on an element&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;ondragdrop&lt;/th&gt;&lt;td&gt;Frame, Window&lt;/td&gt;&lt;td&gt;drag and drop of a shortcut or a file to the browser window&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;onerror&lt;/th&gt;&lt;td&gt;Frame, Image, Window&lt;/td&gt;&lt;td&gt;error in the script or while loading an image (e.g. image not found)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;onfocus&lt;/th&gt;&lt;td&gt;Button, Checkbox, FileUpload, Frame, Layer, Password, Radio, Reset, Select, Submit, Text, Textarea, Window&lt;/td&gt;&lt;td&gt;when an element gets focus (opposite of onblur)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;onkeydown&lt;/th&gt;&lt;td&gt;Document, Image, Link, Textarea&lt;/td&gt;&lt;td&gt;pressing down a key on the keyboard&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;onkeypress&lt;/th&gt;&lt;td&gt;Document, Image, Link, Textarea&lt;/td&gt;&lt;td&gt;pressing (and releasing) a key on the keyboard&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;onkeyup&lt;/th&gt;&lt;td&gt;Document, Image, Link, Textarea&lt;/td&gt;&lt;td&gt;releasing a key on the keyboard&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;onload&lt;/th&gt;&lt;td&gt;Frame, Image, Layer, Window&lt;/td&gt;&lt;td&gt;end of loading&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;onmousedown&lt;/th&gt;&lt;td&gt;Button, Document, Link&lt;/td&gt;&lt;td&gt;pressing mouse button&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;onmouseout&lt;/th&gt;&lt;td&gt;Area, Layer, Link&lt;/td&gt;&lt;td&gt;mouse pointer exiting the element’s area&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;onmouseover&lt;/th&gt;&lt;td&gt;Area, Layer, Link&lt;/td&gt;&lt;td&gt;mouse pointer moving over an element&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;onmouseup&lt;/th&gt;&lt;td&gt;Button, Document, Link&lt;/td&gt;&lt;td&gt;releasing mouse button&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;onmove&lt;/th&gt;&lt;td&gt;Frame, Window&lt;/td&gt;&lt;td&gt;window or frame moving&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;onreset&lt;/th&gt;&lt;td&gt;Form&lt;/td&gt;&lt;td&gt;resetting the form&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;onresize&lt;/th&gt;&lt;td&gt;Frame, Window&lt;/td&gt;&lt;td&gt;changing size of a window or a frame&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;onselect&lt;/th&gt;&lt;td&gt;Textarea&lt;/td&gt;&lt;td&gt;selecting text&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;onsubmit&lt;/th&gt;&lt;td&gt;Form&lt;/td&gt;&lt;td&gt;submitting a form&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;th scope="row"&gt;onunload&lt;/th&gt;&lt;td&gt;Frame, Window&lt;/td&gt;&lt;td&gt;unloading a document (leaving the page or closing the window)&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-7051955236717962543?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/7051955236717962543/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=7051955236717962543' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7051955236717962543'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7051955236717962543'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/07/javascript-event.html' title='JavaScript 的 Event'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-5414843800665596719</id><published>2008-06-13T10:56:00.003+08:00</published><updated>2008-06-13T11:07:05.355+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>Transition 與 TransitionManager 之其四</title><content type='html'>關於 TransitionManager&lt;br /&gt;原本以為無法串接不同效果&lt;br /&gt;所以之前都是用 Tween 動畫來做相關的事&lt;br /&gt;但今天看到 shinder 老師書裡提到&lt;br /&gt;TransitionManager 會 dispatch 以下兩個事件：&lt;br /&gt;allTransitionsInDone 跟 allTransitionsOutDone&lt;br /&gt;這是 doc 裡面沒有提到的&lt;br /&gt;&lt;br /&gt;因此只要監聽這兩個事件&lt;br /&gt;就有串接不同轉場效果的可能性&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-5414843800665596719?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/5414843800665596719/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=5414843800665596719' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/5414843800665596719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/5414843800665596719'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/06/transition-transitionmanager.html' title='Transition 與 TransitionManager 之其四'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-2696890989911570808</id><published>2008-06-12T23:24:00.003+08:00</published><updated>2008-06-13T01:06:36.308+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>如何載入其他SWF裡的類別</title><content type='html'>這是 shinder 老師的書裡看到的&lt;br /&gt;我個人覺得屬於比較高階的知識了...&lt;br /&gt;但由於 shinder 老師寫書的風格比較不拖泥帶水&lt;br /&gt;因此也不會把來龍去脈講得很清楚(反正DOC裡都查得到)&lt;br /&gt;但為了方便理解, 所以我查了一下規格書, 做個筆記, 把它記在這邊&lt;br /&gt;----------------------------------------&lt;br /&gt;1. ApplicationDomain 類別&lt;br /&gt;在透過 Loader 類別載入外部 SWF 檔時使用。載入之 SWF 檔中使用的所有 ActionScript 3.0 定義，都會儲存在 ApplicationDomain 中，該網域則由 LoaderContext 物件的 applicationDomain 屬性所指定。&lt;br /&gt;ApplicationDomain 不具安全性用途，這些網域是要用來管理 ActionScript 程式碼的相關單位。&lt;br /&gt;(LoaderInfo 物件也含有唯讀的 applicationDomain 屬性。)&lt;br /&gt;&lt;br /&gt;currentDomain:ApplicationDomain [read-only]&lt;br /&gt;parentDomain:ApplicationDomain [read-only]&lt;br /&gt;&lt;br /&gt;public function getDefinition(name:String):Object&lt;br /&gt;//會從指定的應用程式網域取得公用定義。 定義可以是類別、名稱空間或函數的定義。&lt;br /&gt;//name:String — 定義的名稱&lt;br /&gt;&lt;br /&gt;2. LoaderContext 的 applicationDomain 屬性&lt;br /&gt;如果將載入的 SWF 檔置入自己的安全性網域 (不論是因為 SWF 檔來自於自己的網域，還是因為將該檔匯入至自己的安全性網域)，就可以控制載入之 SWF 檔的 applicationDomain 選擇。&lt;br /&gt;&lt;br /&gt;而這個屬性的值可以有四種來源：(父輩為載入者, 子系為被載入者)&lt;br /&gt;(1)- new ApplicationDomain(ApplicationDomain.currentDomain)&lt;br /&gt;預設值。允許載入的 SWF 檔直接使用父輩的類別。如果父輩希望使用子系的類別，便必須呼叫 ApplicationDomain.getDefinition() 。&lt;br /&gt;(2)- ApplicationDomain.currentDomain&lt;br /&gt;載入完成時，父輩和子系都可直接使用彼此的類別。&lt;這是 shinder 老師用的方法&gt;&lt;br /&gt;(3)- new ApplicationDomain(null)&lt;br /&gt;完全分隔載入器和載入對象，允許兩者以相同的名稱定義不同的類別，而不會造成衝突或遮蓋。 兩端都能看到另一端之類別的唯一方式，便是呼叫 ApplicationDomain.getDefinition() 方法。&lt;br /&gt;(4)- 其它&lt;br /&gt;例:new ApplicationDomain(ApplicationDomain.currentDomain.parentDomain)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-2696890989911570808?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/2696890989911570808/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=2696890989911570808' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2696890989911570808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2696890989911570808'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/06/swf.html' title='如何載入其他SWF裡的類別'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-7121372426318239842</id><published>2008-06-12T14:45:00.006+08:00</published><updated>2008-06-12T18:23:44.559+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>Stage</title><content type='html'>Stage 代表整個 Flash 顯示區域。&lt;br /&gt;&lt;br /&gt;stageHeight:int&lt;br /&gt;&lt;br /&gt;stageWidth:int&lt;br /&gt;&lt;br /&gt;frameRate:Number  //影格速率&lt;br /&gt;&lt;br /&gt;scaleMode:String&lt;br /&gt;//StageScaleMode.EXACT_FIT -- 在指定區域內完整顯示，同時維持原始比例。&lt;br /&gt;//StageScaleMode.SHOW_ALL -- 在指定區域內完整顯示，但不保留原始比例。 &lt;br /&gt;//StageScaleMode.NO_BORDER -- 填滿指定的區域，維持原始比例，但可能會被裁切。&lt;br /&gt;//StageScaleMode.NO_SCALE -- 固定，就算視窗大小變更，還是維持不變。若視窗小於內容，則裁切。&lt;br /&gt;&lt;br /&gt;displayState:String&lt;br /&gt;//顯示狀態, 有效值為StageDisplayState.FULL_SCREEN 與 StageDisplayState.NORMAL ("fullScreen" 與 "normal")&lt;br /&gt;//影片在全螢幕模式中的縮放行為是由 scaleMode 設定決定&lt;br /&gt;//若要全螢幕顯示swf, html碼也要設定AC_FL_RunContent(... "allowFullScreen", "true", ...)&lt;br /&gt;&lt;br /&gt;fullScreenHeight:uint&lt;br /&gt;fullScreenWidth:uint&lt;br /&gt;//傳回如果立即進入全螢幕狀態，將會使用的監視器 高度|寬度&lt;br /&gt;&lt;br /&gt;fullScreenSourceRect:Rectangle&lt;br /&gt;//全螢幕顯示的指定區塊&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-7121372426318239842?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/7121372426318239842/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=7121372426318239842' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7121372426318239842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7121372426318239842'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/06/stage.html' title='Stage'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-1615143996116066776</id><published>2008-06-09T16:53:00.003+08:00</published><updated>2008-06-09T17:03:19.453+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>navigateToURL 的 windows 屬性</title><content type='html'>今天剛好前同事問我關於頁框的問題&lt;br /&gt;查了一下原廠手冊關於 navigateToURL 的 windows 屬性&lt;br /&gt;有一段是這樣寫的:&lt;br /&gt;&lt;br /&gt;"如果於具有檔案系統的本機安全執行程序中執行的 SWF 檔中的程式碼呼叫 navigateToURL() 函數，並為 window 參數指定自訂視窗名稱，就以隨機方式指定視窗名稱。&lt;br /&gt;名稱格式類似於 "_flashXXXXXXXX"，其中每一個 X 分別代表一個隨機十六進位數字。&lt;br /&gt;在相同的工作階段中 (直到您關閉所包含的瀏覽器視窗為止)，&lt;br /&gt;如果您再次呼叫該函數，並且為 window 參數指定相同的名稱，則仍會使用相同的隨機字串。"&lt;br /&gt;&lt;br /&gt;因此&lt;br /&gt;萬一使用 navigateToURL 做頁框連結&lt;br /&gt;在本機測試時卻無法正常運作&lt;br /&gt;也許不是程式碼寫錯了歐&lt;br /&gt;上傳到網路環境測試一下看看先&lt;br /&gt;在此記錄一下...真是不經一事不長一智阿.....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-1615143996116066776?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/1615143996116066776/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=1615143996116066776' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1615143996116066776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1615143996116066776'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/06/navigatetourl-windows.html' title='navigateToURL 的 windows 屬性'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-6444159873155577617</id><published>2008-06-07T16:13:00.002+08:00</published><updated>2008-06-07T18:55:26.948+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS與Html'/><title type='text'>連結( Link )</title><content type='html'>a 針對連結的一般設定&lt;br /&gt;a:link 連結正常狀態&lt;br /&gt;a:visited 已造訪過的連結&lt;br /&gt;a:hover 滑鼠移上時的狀態&lt;br /&gt;a:active 滑鼠點下時的狀態&lt;br /&gt;&lt;br /&gt;相關屬性:&lt;br /&gt;text-decoration: none/overline/underline/line-through/blink/inherit&lt;br /&gt;(由於border的樣式比較多, 因此也可消除底線之後使用 border 設計新的底線外觀)&lt;br /&gt;&lt;br /&gt;display:block&lt;br /&gt;(搭配 background-color 屬性將連結作為區塊顯示)&lt;br /&gt;&lt;br /&gt;*連結可用span標籤夾分隔符號(如: | )隔開&lt;br /&gt;&lt;br /&gt;*可以利用&lt;br /&gt;display:none;&lt;br /&gt;將不想顯示的資訊隱藏(也可用於預載必要的圖檔)&lt;br /&gt;--------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;下拉選單:(需配合 javascript)&lt;br /&gt;.menu{&lt;br /&gt;position:relative;&lt;br /&gt;left:0;&lt;br /&gt;top:0;&lt;br /&gt;}&lt;br /&gt;.submenu{&lt;br /&gt;visibility:hidden;&lt;br /&gt;position:absolute; &lt;br /&gt;left:0;&lt;br /&gt;/* 將子選單的 position 設成 absolute;&lt;br /&gt;left 設成0 避免隱藏時滑鼠仍感應到子選單範圍 */&lt;br /&gt;}&lt;br /&gt;#menu1{&lt;br /&gt;left:0;&lt;br /&gt;top:0;&lt;br /&gt;}&lt;br /&gt;#menu2{&lt;br /&gt;position:absolute;&lt;br /&gt;left:200px;&lt;br /&gt;top:0;&lt;br /&gt;}&lt;br /&gt;...&lt;br /&gt;&lt;br /&gt;javascript部分則可以下類似這樣的描述&lt;br /&gt;function showSubmenu(n){&lt;br /&gt;obj = document.getElementById("submenu"+n).style.visibility="visible";&lt;br /&gt;}&lt;br /&gt;function hideSubmenu(n){&lt;br /&gt;obj = document.getElementById("submenu"+n).style.visibility="hidden";&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-6444159873155577617?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/6444159873155577617/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=6444159873155577617' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/6444159873155577617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/6444159873155577617'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/06/link.html' title='連結( Link )'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-2265755193337330918</id><published>2008-06-07T14:57:00.003+08:00</published><updated>2008-06-07T16:10:58.973+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS與Html'/><title type='text'>圖片</title><content type='html'>img 標籤的 alt 屬性與 title 屬性:&lt;br /&gt;alt 用於影像無法顯示時的替代文字,&lt;br /&gt;title 用於游標移上圖片時出現的文字&lt;br /&gt;(而一般小圖示應該把 alt 設為"" 以免影響瀏覽)&lt;br /&gt;&lt;br /&gt;圖片的對齊方式:&lt;br /&gt;vertical-align: bottom/middle/top/text-bottom/text-top&lt;br /&gt;(還有 baseline/inherit/sub/super)&lt;br /&gt;&lt;br /&gt;文繞圖&lt;br /&gt;float:left/right (還有 none/inherit)&lt;br /&gt;(針對段落指定文繞圖時, 應指定段落寬度, 以免float無法呈現)&lt;br /&gt;&lt;br /&gt;背景圖&lt;br /&gt;background-image:url(圖檔位置)&lt;br /&gt;(使用背景影像時, 最好也記得指定可以正確顯示文字的背景色, 免得圖出現問題或未完全載入時字看不清楚)&lt;br /&gt;&lt;br /&gt;background-repeat:no-repeat/repeat/repeat-x/repeat-y/inherit&lt;br /&gt;&lt;br /&gt;background-position: Xpx Ypx&lt;br /&gt;(還有 left/center/right/bottom/top/inherit)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-2265755193337330918?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/2265755193337330918/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=2265755193337330918' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2265755193337330918'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2265755193337330918'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/06/blog-post_07.html' title='圖片'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-3821039004898220163</id><published>2008-06-07T14:29:00.003+08:00</published><updated>2008-06-07T14:55:35.554+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS與Html'/><title type='text'>文字-清單</title><content type='html'>清單(html)&lt;br /&gt;ol, ul 與 li 標籤(ol 標籤使用編號, ul 標籤使用圖形, li 標籤則包在裡面表示每個清單項目)&lt;br /&gt;&lt;br /&gt;使用圖檔作為項目圖示:&lt;br /&gt;ul{&lt;br /&gt;list-style-image:url("清單項目圖示檔");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;定義清單:( dl, dt, dd 標籤)&lt;br /&gt;dl 標籤為最外層, 裡面 dt 與 dd 成對出現, 但若要排在同一行則需下css&lt;br /&gt;例:&lt;br /&gt;dt{&lt;br /&gt;float:left;&lt;br /&gt;}&lt;br /&gt;dd{&lt;br /&gt;margin-left: 5em;&lt;br /&gt;}&lt;br /&gt;因此其實可用表格來做編排而不用定義清單的標籤&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-3821039004898220163?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/3821039004898220163/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=3821039004898220163' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3821039004898220163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3821039004898220163'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/06/blog-post.html' title='文字-清單'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-1033388023138052659</id><published>2008-06-03T15:49:00.001+08:00</published><updated>2008-06-07T14:20:27.096+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS與Html'/><title type='text'>文字</title><content type='html'>&lt;div&gt;font-size (WCAG 建議使用 em 而不是 px / % / ... 等)&lt;br /&gt;&lt;table bordercolor="#666666" cellpadding="2" width="300" bgcolor="#ffffff" border="1"&gt;&lt;tbody&gt;&lt;tr align="middle" bgcolor="#cccc66"&gt;&lt;th scope="col"&gt;Standard Mode&lt;/th&gt;&lt;th scope="col" bgcolor="#cecf63"&gt;h1~h6&lt;/th&gt;&lt;th scope="col"&gt;px&lt;/th&gt;&lt;th scope="col"&gt;em&lt;/th&gt;&lt;/tr&gt;&lt;tr align="middle"&gt;&lt;td&gt;xx-large&lt;/td&gt;&lt;td bgcolor="#cecf63"&gt;h1&lt;/td&gt;&lt;td&gt;32&lt;/td&gt;&lt;td&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr align="middle"&gt;&lt;td&gt;x-large&lt;/td&gt;&lt;td bgcolor="#cecf63"&gt;h2&lt;/td&gt;&lt;td&gt;24&lt;/td&gt;&lt;td&gt;1.5&lt;/td&gt;&lt;/tr&gt;&lt;tr align="middle"&gt;&lt;td&gt;large&lt;/td&gt;&lt;td bgcolor="#cecf63"&gt;h3&lt;/td&gt;&lt;td&gt;18&lt;/td&gt;&lt;td&gt;1.25&lt;/td&gt;&lt;/tr&gt;&lt;tr align="middle"&gt;&lt;td&gt;medium&lt;/td&gt;&lt;td bgcolor="#cecf63"&gt;h4&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr align="middle"&gt;&lt;td&gt;small&lt;/td&gt;&lt;td bgcolor="#cecf63"&gt;h5&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;0.75&lt;/td&gt;&lt;/tr&gt;&lt;tr align="middle"&gt;&lt;td&gt;x-small&lt;/td&gt;&lt;td bgcolor="#cecf63"&gt;h6&lt;/td&gt;&lt;td&gt;10&lt;/td&gt;&lt;td&gt;0.625&lt;/td&gt;&lt;/tr&gt;&lt;tr align="middle"&gt;&lt;td&gt;xx-small&lt;/td&gt;&lt;td bgcolor="#cecf63"&gt;---&lt;/td&gt;&lt;td&gt;9&lt;/td&gt;&lt;td&gt;0.5625&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;相關屬性:&lt;br /&gt;color (字體顏色)&lt;br /&gt;background-color&lt;br /&gt;font-family (字體採用順序)&lt;br /&gt;font-style: normal/italic/inherit/&lt;br /&gt;text-align (對齊)&lt;br /&gt;line-height (行距)&lt;br /&gt;width (文字區塊寬度)&lt;br /&gt;&lt;br /&gt;border-top&lt;br /&gt;border-bottom&lt;br /&gt;border-left (邊框-左方)(可用來做文字左方的色塊或圖案)&lt;br /&gt;border-right&lt;br /&gt;border (統一做邊框設定)&lt;br /&gt;&lt;br /&gt;margin-top (外距)&lt;br /&gt;margin-bottom&lt;br /&gt;margin-left&lt;br /&gt;margin-right&lt;br /&gt;padding-top (內距)&lt;br /&gt;padding-bottom&lt;br /&gt;padding-left&lt;br /&gt;padding-right&lt;br /&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-1033388023138052659?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/1033388023138052659/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=1033388023138052659' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1033388023138052659'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1033388023138052659'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/05/blog-post.html' title='文字'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-3129324738359230308</id><published>2008-06-03T10:19:00.009+08:00</published><updated>2008-06-07T14:28:58.666+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CSS與Html'/><title type='text'>CSS 與 HTML 注意事項</title><content type='html'>注意事項:&lt;br /&gt;1. 標準規格的概念, 是將格式(如字體, 對齊, ...等) 都從HTML中移出, 而由 CSS 檔案做管理&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. !DOCTYPE標籤中 HTML 4.01 的種類:&lt;br /&gt;Strict -- 嚴格(未使用應避免使用的屬性與要素)&lt;br /&gt;Transitional -- 過渡性的(有使用應避免使用的屬性與要素)&lt;br /&gt;Frameset -- 頁框設定的(使用頁框及應避免使用的屬性與要素)&lt;br /&gt;&lt;br /&gt;3. 套用外部樣式表&lt;br /&gt;使用 link 標籤 rel="stylesheet" type="text/css" href="css檔案路徑" media="all"&lt;br /&gt;(關於 media 屬性: all/screen/print ,media 屬性的不同可指定於不同情形下使用不同 CSS 樣式, 如列印版本可套用較適合列印的 CSS 樣式)&lt;br /&gt;&lt;br /&gt;4. 強調文字&lt;br /&gt;使用 em 標籤 或 strong 標籤&lt;br /&gt;&lt;br /&gt;5. 網頁概要與關鍵字(由於常被濫用, 因此目前搜尋引擎已不大重視此部份)&lt;br /&gt;網頁概要 -- meta 標籤中 http-equiv="Content-Type" content="在此描述網頁概要"&lt;br /&gt;關鍵字 -- meta 標籤中 http-equiv="keywords" content="逗號分隔的關鍵字, 逗號分隔的關鍵字"&lt;br /&gt;&lt;br /&gt;6. 群組化: div 與 section 標籤的功能&lt;br /&gt;div -- 常用&lt;br /&gt;section -- 可層級化(xHtml 2.0)&lt;br /&gt;&lt;br /&gt;7. address標籤的使用, 用作版權宣告與作者資料描述&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-3129324738359230308?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/3129324738359230308/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=3129324738359230308' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3129324738359230308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/3129324738359230308'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/06/css-html.html' title='CSS 與 HTML 注意事項'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-2260771703140136107</id><published>2008-04-01T20:59:00.006+08:00</published><updated>2008-05-28T00:24:31.871+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><title type='text'>ActionScript 3.0 的繪圖 API</title><content type='html'>套件 flash.display&lt;br /&gt;類別 public final class Graphics&lt;br /&gt;繼承 Graphics Object&lt;br /&gt;&lt;br /&gt;public function &lt;strong&gt;clear&lt;/strong&gt;():void&lt;br /&gt;&lt;span style="color:#666666;"&gt;//clear()只能清除繪圖 API 畫出的圖形&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;public function&lt;strong&gt; lineStyle&lt;/strong&gt;(&lt;br /&gt;thickness:Number,&lt;br /&gt;color:uint = 0,&lt;br /&gt;alpha:Number = 1.0,&lt;br /&gt;pixelHinting:Boolean = false,&lt;br /&gt;scaleMode:String = "normal",&lt;br /&gt;caps:String = null,&lt;br /&gt;joints:String = null,&lt;br /&gt;miterLimit:Number = 3&lt;br /&gt;):void&lt;br /&gt;&lt;span style="color:#666666;"&gt;//caps:String (default = null) — 來自 CapsStyle 類別的數值，可指定線段終點的端點類型。 有效值為：CapsStyle.NONE、CapsStyle.ROUND，以及 CapsStyle.SQUARE。 如果沒有指定值，會使用圓形端點。&lt;br /&gt;//joints:String (default = null) — 來自 JointStyle 類別的數值，可指定用在角度上的接合外觀類型。 有效值為：JointStyle.BEVEL、JointStyle.MITER，以及JointStyle.ROUND。 如果沒有指定值，會使用圓角連接。&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;public function &lt;strong&gt;lineGradientStyle&lt;/strong&gt;(&lt;br /&gt;type:String,&lt;br /&gt;colors:Array,&lt;br /&gt;alphas:Array,&lt;br /&gt;ratios:Array,&lt;br /&gt;matrix:Matrix = null,&lt;br /&gt;spreadMethod:String = "pad",&lt;br /&gt;interpolationMethod:String = "rgb",&lt;br /&gt;focalPointRatio:Number = 0&lt;br /&gt;):void&lt;br /&gt;&lt;span style="color:#666666;"&gt;//呼叫 lineGradientStyle() 前，須先呼叫 lineStyle()，否則線段樣式的值仍會保持 undefined&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#666666;"&gt;//type:String — GradientType.LINEAR 或 GradientType.RADIAL&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#666666;"&gt;//alphas:Array — Alpha 值的陣列，會對應到 colors 陣列中的顏色，有效值從 0 到 100。 如果值小於 0，Flash Player 便會使用 0。 如果值大於 100，Flash Player 便會使用 100。&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#666666;"&gt;//ratios:Array — 顏色分佈比例的陣列。有效值從 0 到 255。&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#666666;"&gt;//spreadMethod:String (default = "pad") — 來自 SpreadMethod 類別的數值，用來指定散佈方法：    SpreadMethod.PAD、SpreadMethod.REFLECT、SpreadMethod.REPEAT&lt;br /&gt;//interpolationMethod:String (default = "rgb") — 來自 InterpolationMethod 類別的數值，不同的內插補點方法會產生不同的外觀，InterpolationMethod.LINEAR_RGB、InterpolationMethod.RGB &lt;/span&gt;&lt;br /&gt;&lt;span style="color:#666666;"&gt;//focalPointRatio:Number (default = 0) — 用來控制漸層的焦點位置。-1 ~ 0 ~ 1，0為中心點&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;public function &lt;strong&gt;moveTo&lt;/strong&gt;(x:Number, y:Number):void&lt;br /&gt;&lt;br /&gt;public function &lt;strong&gt;lineTo&lt;/strong&gt;(x:Number, y:Number):void&lt;br /&gt;&lt;br /&gt;public function &lt;strong&gt;curveTo&lt;/strong&gt;(&lt;br /&gt;controlX:Number, controlY:Number,&lt;br /&gt;anchorX:Number, anchorY:Number&lt;br /&gt;):void&lt;br /&gt;&lt;span style="color:#666666;"&gt;//線段不會經過(controlX,controlY)&lt;br /&gt;//若要求線段經過我們指定的點(targetX, targetY)可用以下方式:&lt;br /&gt;// controlX = targetX *2 - (startX + anchorX)/2&lt;br /&gt;// controlY = targetY *2 - (startY + anchorY)/2&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;public function &lt;strong&gt;beginFill&lt;/strong&gt;(color:uint, alpha:Number = 1.0):void&lt;br /&gt;&lt;br /&gt;public function &lt;strong&gt;endFill&lt;/strong&gt;():void&lt;br /&gt;&lt;br /&gt;public function &lt;strong&gt;beginGradientFill&lt;/strong&gt;(&lt;br /&gt;type:String,&lt;br /&gt;colors:Array,&lt;br /&gt;alphas:Array,&lt;br /&gt;ratios:Array,&lt;br /&gt;:Matrix = null,&lt;br /&gt;spreadMethod:String = "pad",&lt;br /&gt;interpolationMethod:String = "rgb",&lt;br /&gt;focalPointRatio:Number = 0&lt;br /&gt;):void&lt;br /&gt;&lt;span style="color:#666666;"&gt;//type:String — 來自 GradientType 類別的數值可用來指定要用哪個漸層模式：GradientType.LINEAR 或 GradientType.RADIAL。&lt;br /&gt;//ratios:Array — 顏色分佈比例的陣列。有效值為 0 到 255。 0 代表位於漸層最左端，255 代表最右端。&lt;br /&gt;//matrix:Matrix (default = null) — flash.geom.Matrix 類別所定義的變形矩陣。 flash.geom.Matrix 類別包含 createGradientBox() 方法，可輕易地設定矩陣，以便與 beginGradientFill() 方法搭配使用。&lt;br /&gt;//Matrix.createGradientBox(width:Number, height:Number, rotation:Number = 0, tx:Number = 0, ty:Number = 0):void 其中rotation要用Math.PI/n&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;public function &lt;strong&gt;beginBitmapFill&lt;/strong&gt;(&lt;br /&gt;bitmap:BitmapData,&lt;br /&gt;matrix:Matrix = null,&lt;br /&gt;repeat:Boolean = true,&lt;br /&gt;smooth:Boolean = false&lt;br /&gt;):void&lt;br /&gt;&lt;span style="color:#666666;"&gt;//bitmap:BitmapData — 包含要顯示的位元之透明或不透明點陣圖影像。&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#666666;"&gt;//repeat:Boolean (default = true) — true 以並排模式重複顯示點陣圖影像。若為 false 則使用邊緣像素填滿&lt;br /&gt;//smooth:Boolean (default = false) — false 使用最近鄰點法放大點陣圖，較快。 true 則使用雙線性插補法放大點陣圖。&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;public function &lt;strong&gt;drawCircle&lt;/strong&gt;(x:Number, y:Number, radius:Number):void&lt;br /&gt;&lt;br /&gt;public function &lt;strong&gt;drawEllipse&lt;/strong&gt;(x:Number, y:Number, width:Number, height:Number):void&lt;br /&gt;&lt;span style="color:#666666;"&gt;//畫橢圓&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;public function &lt;strong&gt;drawRect&lt;/strong&gt;(x:Number, y:Number, width:Number, height:Number):void&lt;br /&gt;&lt;br /&gt;public function &lt;strong&gt;drawRoundRect&lt;/strong&gt;(&lt;br /&gt;x:Number, y:Number, width:Number, height:Number,&lt;br /&gt;ellipseWidth:Number, ellipseHeight:Number&lt;br /&gt;):void&lt;br /&gt;&lt;span style="color:#666666;"&gt;//畫圓角橢圓&lt;/span&gt;&lt;br /&gt;-----------------------------------------------------------&lt;br /&gt;&lt;br /&gt;套件 flash.geom&lt;br /&gt;類別 public class ColorTransform&lt;br /&gt;繼承 ColorTransform Object&lt;br /&gt;子類別 Color&lt;br /&gt;&lt;br /&gt;public function ColorTransform(&lt;br /&gt;redMultiplier:Number = 1.0,&lt;br /&gt;greenMultiplier:Number = 1.0,&lt;br /&gt;blueMultiplier:Number = 1.0,&lt;br /&gt;alphaMultiplier:Number = 1.0,&lt;br /&gt;redOffset:Number = 0,&lt;br /&gt;greenOffset:Number = 0,&lt;br /&gt;blueOffset:Number = 0,&lt;br /&gt;alphaOffset:Number = 0&lt;br /&gt;)&lt;br /&gt;&lt;span style="color:#666666;"&gt;//前四個參數範圍0~1.0, 後四個參數範圍 -255~255&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-2260771703140136107?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/2260771703140136107/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=2260771703140136107' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2260771703140136107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/2260771703140136107'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/04/actionscript-30-api.html' title='ActionScript 3.0 的繪圖 API'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-8872809293925410613</id><published>2008-03-27T13:26:00.006+08:00</published><updated>2008-09-23T15:30:15.478+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ActionScript'/><category scheme='http://www.blogger.com/atom/ns#' term='通用'/><title type='text'>三角函數公式與應用</title><content type='html'>360度 等於 2 PI&lt;br /&gt;180度 等於 1 PI&lt;br /&gt;PI 約等於 3.1416&lt;br /&gt;所以 一個弧度 約等於 57.2958 度........&lt;br /&gt;&lt;br /&gt;角度與弧度的轉換:&lt;br /&gt;radians = degrees * Math.PI / 180&lt;br /&gt;degrees = radians *180 / Math.PI&lt;br /&gt;&lt;br /&gt;三角函數: (注意先把角度轉成弧度)&lt;br /&gt;Math.sin(radians) = 對邊 / 斜邊   // y&lt;br /&gt;Math.cos(radians) = 鄰邊 / 斜邊   // x&lt;br /&gt;Math.tan(radians) = 對邊 / 鄰邊&lt;br /&gt;( 直角三角形, 非直角的其中一角的 sin 等於另一角的 cos )&lt;br /&gt;&lt;br /&gt;Math.asin() -- 以 sin 值求弧度(再套用弧度轉角度公式可得角度)&lt;br /&gt;Math.acos() -- 以 cos 值求弧度(再套用弧度轉角度公式可得角度)&lt;br /&gt;Math.atan() -- 以 tan 值求弧度(再套用弧度轉角度公式可得角度)&lt;br /&gt;Math.atan2(y,x) -- 傳入y,x(即對邊與鄰邊的長)求弧度(再套用弧度轉角度公式可得角度)&lt;br /&gt;&lt;br /&gt;應用:&lt;br /&gt;&lt;br /&gt;以正弦波(y)及餘弦波(x), 畫出橢圓&lt;br /&gt;利用畢式定理(直角三角形斜邊平方等於另兩邊平方和)求出兩點距離&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-8872809293925410613?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/8872809293925410613/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=8872809293925410613' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/8872809293925410613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/8872809293925410613'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/03/blog-post.html' title='三角函數公式與應用'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-7617453881435358884</id><published>2008-03-27T12:58:00.007+08:00</published><updated>2008-03-27T13:23:51.960+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='通用'/><title type='text'>ASCII code 0~127</title><content type='html'>控制字元&lt;br /&gt;&lt;table class="wikitable" cellspacing="0" cellpadding="2" border="1"&gt;&lt;tbody&gt;&lt;tr valign="bottom"&gt;&lt;th&gt;十進位&lt;/th&gt;&lt;th&gt;縮寫&lt;/th&gt;&lt;th&gt;名稱/意義&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;0&lt;/td&gt;&lt;td align="middle"&gt;NUL&lt;/td&gt;&lt;td&gt;空字元(Null)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;1&lt;/td&gt;&lt;td align="middle"&gt;SOH&lt;/td&gt;&lt;td&gt;標題開始&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;2&lt;/td&gt;&lt;td align="middle"&gt;STX&lt;/td&gt;&lt;td&gt;本文開始&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;3&lt;/td&gt;&lt;td align="middle"&gt;ETX&lt;/td&gt;&lt;td&gt;本文結束&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;4&lt;/td&gt;&lt;td align="middle"&gt;EOT&lt;/td&gt;&lt;td&gt;傳輸結束&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;5&lt;/td&gt;&lt;td align="middle"&gt;ENQ&lt;/td&gt;&lt;td&gt;請求&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;6&lt;/td&gt;&lt;td align="middle"&gt;ACK&lt;/td&gt;&lt;td&gt;確認回應&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;7&lt;/td&gt;&lt;td align="middle"&gt;BEL&lt;/td&gt;&lt;td&gt;響鈴&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ccff99"&gt;&lt;td align="middle"&gt;8&lt;/td&gt;&lt;td align="middle"&gt;BS&lt;/td&gt;&lt;td&gt;退格&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;9&lt;/td&gt;&lt;td align="middle"&gt;HT&lt;/td&gt;&lt;td&gt;水平製表符&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ccff99"&gt;&lt;td align="middle"&gt;10&lt;/td&gt;&lt;td align="middle"&gt;LF&lt;/td&gt;&lt;td&gt;換行鍵&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;11&lt;/td&gt;&lt;td align="middle"&gt;VT&lt;/td&gt;&lt;td&gt;垂直製表符&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;12&lt;/td&gt;&lt;td align="middle"&gt;FF&lt;/td&gt;&lt;td&gt;換頁鍵&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ccff99"&gt;&lt;td align="middle"&gt;13&lt;/td&gt;&lt;td align="middle"&gt;CR&lt;/td&gt;&lt;td&gt;回車鍵&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;4&lt;/td&gt;&lt;td align="middle"&gt;SO&lt;/td&gt;&lt;td&gt;取消變換(Shift out)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;5&lt;/td&gt;&lt;td align="middle"&gt;SI&lt;/td&gt;&lt;td&gt;啟用變換(Shift in)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;6&lt;/td&gt;&lt;td align="middle"&gt;DLE&lt;/td&gt;&lt;td&gt;跳出數據通訊&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;17&lt;/td&gt;&lt;td align="middle"&gt;DC1&lt;/td&gt;&lt;td&gt;設備控制一 (XON 啟用軟體速度控制)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;18&lt;/td&gt;&lt;td align="middle"&gt;DC2&lt;/td&gt;&lt;td&gt;設備控制二&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;19&lt;/td&gt;&lt;td align="middle"&gt;DC3&lt;/td&gt;&lt;td&gt;設備控制三 (XOFF 停用軟體速度控制)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;20&lt;/td&gt;&lt;td align="middle"&gt;DC4&lt;/td&gt;&lt;td&gt;設備控制四&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;21&lt;/td&gt;&lt;td align="middle"&gt;NAK&lt;/td&gt;&lt;td&gt;確認失敗回應&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;22&lt;/td&gt;&lt;td align="middle"&gt;SYN&lt;/td&gt;&lt;td&gt;同步用暫停&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;23&lt;/td&gt;&lt;td align="middle"&gt;ETB&lt;/td&gt;&lt;td&gt;區塊傳輸結束&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;24&lt;/td&gt;&lt;td align="middle"&gt;CAN&lt;/td&gt;&lt;td&gt;取消&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;25&lt;/td&gt;&lt;td align="middle"&gt;EM&lt;/td&gt;&lt;td&gt;連線介質中斷&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;26&lt;/td&gt;&lt;td align="middle"&gt;SUB&lt;/td&gt;&lt;td&gt;替換&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ccff99"&gt;&lt;td align="middle"&gt;27&lt;/td&gt;&lt;td align="middle"&gt;ESC&lt;/td&gt;&lt;td&gt;跳出&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;28&lt;/td&gt;&lt;td align="middle"&gt;FS&lt;/td&gt;&lt;td&gt;文件分割符&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;29&lt;/td&gt;&lt;td align="middle"&gt;GS&lt;/td&gt;&lt;td&gt;群組分隔符&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;30&lt;/td&gt;&lt;td align="middle"&gt;RS&lt;/td&gt;&lt;td&gt;記錄分隔符&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;31&lt;/td&gt;&lt;td align="middle"&gt;US&lt;/td&gt;&lt;td&gt;單元分隔&lt;/td&gt;&lt;/tr&gt;&lt;tr bgcolor="#ccff99"&gt;&lt;td align="middle"&gt;127&lt;/td&gt;&lt;td align="middle"&gt;DEL&lt;/td&gt;&lt;td&gt;刪除&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;可顯示字元&lt;br /&gt;&lt;table cellspacing="5" cellpadding="0" border="0"&gt;&lt;tbody&gt;&lt;tr valign="top"&gt;&lt;td&gt;&lt;table class="wikitable" cellspacing="0" cellpadding="2" border="1"&gt;&lt;tbody&gt;&lt;tr valign="bottom"&gt;&lt;th&gt;十進位&lt;/th&gt;&lt;th&gt;圖形&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;32&lt;/td&gt;&lt;td align="middle"&gt;(空格)(␠)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;33&lt;/td&gt;&lt;td align="middle"&gt;!&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;34&lt;/td&gt;&lt;td align="middle"&gt;"&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;35&lt;/td&gt;&lt;td align="middle"&gt;#&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;36&lt;/td&gt;&lt;td align="middle"&gt;$&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;37&lt;/td&gt;&lt;td align="middle"&gt;%&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;38&lt;/td&gt;&lt;td align="middle"&gt;&amp;amp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;39&lt;/td&gt;&lt;td align="middle"&gt;'&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;40&lt;/td&gt;&lt;td align="middle"&gt;(&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;41&lt;/td&gt;&lt;td align="middle"&gt;)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;42&lt;/td&gt;&lt;td align="middle"&gt;*&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;43&lt;/td&gt;&lt;td align="middle"&gt;+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;44&lt;/td&gt;&lt;td align="middle"&gt;,&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;45&lt;/td&gt;&lt;td align="middle"&gt;-&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;46&lt;/td&gt;&lt;td align="middle"&gt;.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;47&lt;/td&gt;&lt;td align="middle"&gt;/&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;48&lt;/td&gt;&lt;td align="middle"&gt;0&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;49&lt;/td&gt;&lt;td align="middle"&gt;1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;50&lt;/td&gt;&lt;td align="middle"&gt;2&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;51&lt;/td&gt;&lt;td align="middle"&gt;3&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;52&lt;/td&gt;&lt;td align="middle"&gt;4&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;53&lt;/td&gt;&lt;td align="middle"&gt;5&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;54&lt;/td&gt;&lt;td align="middle"&gt;6&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;55&lt;/td&gt;&lt;td align="middle"&gt;7&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;56&lt;/td&gt;&lt;td align="middle"&gt;8&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;57&lt;/td&gt;&lt;td align="middle"&gt;9&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;58&lt;/td&gt;&lt;td align="middle"&gt;:&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;59&lt;/td&gt;&lt;td align="middle"&gt;;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;60&lt;/td&gt;&lt;td align="middle"&gt;&amp;lt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;61&lt;/td&gt;&lt;td align="middle"&gt;=&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;62&lt;/td&gt;&lt;td align="middle"&gt;&amp;gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;63&lt;/td&gt;&lt;td align="middle"&gt;?&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;64&lt;/td&gt;&lt;td align="middle"&gt;@&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;table class="wikitable" cellspacing="0" cellpadding="2" border="1"&gt;&lt;tbody&gt;&lt;tr valign="bottom"&gt;&lt;th&gt;十進位&lt;/th&gt;&lt;th&gt;圖形&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;65&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;A&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;66&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;B&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;67&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;C&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;68&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;D&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;69&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;E&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;70&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;F&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;71&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;G&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;72&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;H&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;73&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;I&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;74&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;J&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;75&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;K&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;76&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;L&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;77&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;M&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;78&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;N&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;79&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;O&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;80&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;P&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;81&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;Q&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;82&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;R&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;83&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;S&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;84&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;T&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;85&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;U&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;86&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;V&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;87&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;W&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;88&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;X&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;89&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;Y&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;90&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;Z&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;91&lt;/td&gt;&lt;td align="middle"&gt;[&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;92&lt;/td&gt;&lt;td align="middle"&gt;\&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;93&lt;/td&gt;&lt;td align="middle"&gt;]&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;94&lt;/td&gt;&lt;td align="middle"&gt;^&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;95&lt;/td&gt;&lt;td align="middle"&gt;_&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;96&lt;/td&gt;&lt;td align="middle"&gt;`&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;td&gt;&lt;/td&gt;&lt;td&gt;&lt;table class="wikitable" cellspacing="0" cellpadding="2" border="1"&gt;&lt;tbody&gt;&lt;tr valign="bottom"&gt;&lt;th&gt;十進位&lt;/th&gt;&lt;th&gt;圖形&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;97&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;a&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;98&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;b&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;99&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;c&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;100&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;d&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;101&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;e&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;102&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;f&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;103&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;g&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;104&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;h&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;105&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;i&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;106&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;j&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;107&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;k&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;108&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;l&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;109&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;m&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;110&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;n&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;111&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;o&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;112&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;p&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;113&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;q&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;114&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;r&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;115&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;s&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;116&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;t&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;117&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;u&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;118&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;v&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;119&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;w&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;120&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;x&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;121&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;y&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;122&lt;/td&gt;&lt;td align="middle" bgcolor="#ccff99"&gt;z&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;123&lt;/td&gt;&lt;td align="middle"&gt;{&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;124&lt;/td&gt;&lt;td align="middle"&gt;|&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;125&lt;/td&gt;&lt;td align="middle"&gt;}&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align="middle"&gt;126&lt;/td&gt;&lt;td align="middle"&gt;~&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-7617453881435358884?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/7617453881435358884/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=7617453881435358884' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7617453881435358884'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/7617453881435358884'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/03/ascii-code-0127.html' title='ASCII code 0~127'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-8390698038226577196</id><published>2008-03-15T11:51:00.005+08:00</published><updated>2008-03-15T15:26:39.728+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>php-日期與時間</title><content type='html'>int&lt;strong&gt; time &lt;/strong&gt;( void )&lt;br /&gt;//Returns the current time measured in the number of seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)&lt;br /&gt;&lt;br /&gt;int &lt;strong&gt;mktime&lt;/strong&gt; ( [int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year [, int $is_dst]]]]]]] )&lt;br /&gt;//傳入時, 分, 秒, 月, 日, 年, 回傳timestamp&lt;br /&gt;&lt;br /&gt;mixed &lt;strong&gt;microtime&lt;/strong&gt; ( [bool $get_as_float] )&lt;br /&gt;//回傳timestamp的毫秒與秒,傳入TRUE則回傳 Float&lt;br /&gt;&lt;br /&gt;int&lt;strong&gt; strtotime&lt;/strong&gt; ( string $time [, int $now] )&lt;br /&gt;//嘗試解析的傳入字串格式的日期時間(效率很低)&lt;br /&gt;&lt;br /&gt;array &lt;strong&gt;getdate&lt;/strong&gt; ( [int $timestamp] )&lt;br /&gt;//以關連式陣列回傳時間回傳&lt;br /&gt;&lt;br /&gt;bool &lt;strong&gt;checkdate&lt;/strong&gt; ( int $month, int $day, int $year )&lt;br /&gt;//傳入月, 日, 年, 回傳 True or False&lt;br /&gt;&lt;br /&gt;格式化輸出:&lt;br /&gt;string &lt;strong&gt;date &lt;/strong&gt;( string $format [, int $timestamp] )&lt;br /&gt;//將時間格式化輸出&lt;br /&gt;例: echo date('Y-m-d H:i:s l');  //會輸出 2008-03-15 14:30:22 Saturday 這樣的格式&lt;br /&gt;&lt;br /&gt;string &lt;strong&gt;strftime&lt;/strong&gt; ( string $format [, int $timestamp] )&lt;br /&gt;//可以與字串混合輸出的函式, 並可按地區設定做調整(需搭配setlocale使用)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-8390698038226577196?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/8390698038226577196/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=8390698038226577196' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/8390698038226577196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/8390698038226577196'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/03/php_15.html' title='php-日期與時間'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-6810092470712073401</id><published>2008-03-14T14:59:00.003+08:00</published><updated>2008-03-14T17:01:20.409+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>php-檔案存取</title><content type='html'>resource &lt;strong&gt;fopen &lt;/strong&gt;( string $filename, string $mode [, bool $use_include_path [, resource $context]] )&lt;br /&gt;//讀取本地端或網路的檔案&lt;br /&gt;&lt;br /&gt;mode參數如下:&lt;br /&gt;&lt;table bordercolor="#333333" cellpadding="2" width="400" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width="20"&gt;&lt;div align="center"&gt;r&lt;/div&gt;&lt;/td&gt;&lt;td&gt;read only;&lt;br /&gt;指標在檔案開頭&lt;/td&gt;&lt;td width="20"&gt;&lt;div align="center"&gt;r+&lt;/div&gt;&lt;/td&gt;&lt;td&gt;read, write;&lt;br /&gt;指標在檔案開頭&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="20"&gt;&lt;div align="center"&gt;w&lt;/div&gt;&lt;/td&gt;&lt;td&gt;write only; 覆蓋原本檔案,&lt;br /&gt;若檔案不存在會嘗試建立&lt;/td&gt;&lt;td width="20"&gt;&lt;div align="center"&gt;w+&lt;/div&gt;&lt;/td&gt;&lt;td&gt;read, write; 覆蓋原本檔案,&lt;br /&gt;若檔案不存在會嘗試建立&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="20"&gt;&lt;div align="center"&gt;a&lt;/div&gt;&lt;/td&gt;&lt;td&gt;write after only;&lt;br /&gt;若檔案不存在會嘗試建立&lt;/td&gt;&lt;td width="20"&gt;&lt;div align="center"&gt;a+&lt;/div&gt;&lt;/td&gt;&lt;td&gt;read &amp;amp; write after;&lt;br /&gt;若檔案不存在會嘗試建立&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width="20"&gt;&lt;div align="center"&gt;x&lt;/div&gt;&lt;/td&gt;&lt;td&gt;create &amp;amp; write;&lt;br /&gt;若檔案不存在會return False&lt;/td&gt;&lt;td width="20"&gt;&lt;div align="center"&gt;x+&lt;/div&gt;&lt;/td&gt;&lt;td&gt;create, read &amp;amp; write;&lt;br /&gt;若檔案不存在會return False&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;bool &lt;strong&gt;fclose&lt;/strong&gt; ( resource $handle )&lt;br /&gt;//關閉檔案&lt;br /&gt;&lt;br /&gt;string &lt;strong&gt;fgets &lt;/strong&gt;( resource $handle [, int $length] )&lt;br /&gt;//Gets a line from file pointer. 或傳入$length 指定抓取 $length - 1 bytes&lt;br /&gt;&lt;br /&gt;string &lt;strong&gt;fgetc &lt;/strong&gt;( resource $handle )&lt;br /&gt;//Gets a character from the given file pointer.&lt;br /&gt;&lt;br /&gt;string &lt;strong&gt;fread&lt;/strong&gt; ( resource $handle, int $length )&lt;br /&gt;//在 $handle 中的 file pointer 位置讀取 $length bytes 的資料, 若到 EOF(end of file)也會停止&lt;br /&gt;&lt;br /&gt;int &lt;strong&gt;filesize &lt;/strong&gt;( string $filename )&lt;br /&gt;//Gets the size for the given file.&lt;br /&gt;&lt;br /&gt;bool &lt;strong&gt;feof &lt;/strong&gt;( resource $handle )&lt;br /&gt;//查看 file pointer 是否到達檔案結尾&lt;br /&gt;&lt;br /&gt;bool &lt;strong&gt;file_exists&lt;/strong&gt; ( string $filename )&lt;br /&gt;//查看檔案是否存在&lt;br /&gt;&lt;br /&gt;string &lt;strong&gt;file_get_contents&lt;/strong&gt; ( string $filename [, int $flags [, resource $context [, int $offset [, int $maxlen]]]] )&lt;br /&gt;//將檔案以字串型態傳回, 也可指定範圍(從 $offset 開始抓 $maxlen 長度)&lt;br /&gt;&lt;br /&gt;int&lt;strong&gt; fwrite&lt;/strong&gt; ( resource $handle, string $string [, int $length] )&lt;br /&gt;//將字串從目前 file pointer 處寫入 $handle&lt;br /&gt;&lt;br /&gt;bool &lt;strong&gt;fflush&lt;/strong&gt; ( resource $handle )&lt;br /&gt;//強迫將緩衝資料寫入檔案(可用來確保讀取前已經寫入)&lt;br /&gt;(但會影響檔案操作速度, 故不建議平常使用)&lt;br /&gt;&lt;br /&gt;bool &lt;strong&gt;is_readable&lt;/strong&gt; ( string $filename )&lt;br /&gt;//查詢是否對某檔案有讀取權限&lt;br /&gt;&lt;br /&gt;bool &lt;strong&gt;is_writable&lt;/strong&gt; ( string $filename )&lt;br /&gt;//查詢是否對某檔案有寫入權限&lt;br /&gt;&lt;br /&gt;bool &lt;strong&gt;unlink&lt;/strong&gt; ( string $filename [, resource $context] )&lt;br /&gt;//刪除檔案(謹慎使用...有安全性風險)&lt;br /&gt;&lt;br /&gt;bool &lt;strong&gt;rename&lt;/strong&gt; ( string $oldname, string $newname [, resource $context] )&lt;br /&gt;//檔案重新命名&lt;br /&gt;&lt;br /&gt;string &lt;strong&gt;basename&lt;/strong&gt; ( string $path [, string $suffix] )&lt;br /&gt;//回傳檔名&lt;br /&gt;&lt;br /&gt;string&lt;strong&gt; dirname&lt;/strong&gt; ( string $path )&lt;br /&gt;//回傳檔案所在資料夾路徑&lt;br /&gt;&lt;br /&gt;string &lt;strong&gt;realpath&lt;/strong&gt; ( string $path )&lt;br /&gt;//將相對路徑轉為絕對路徑&lt;br /&gt;&lt;br /&gt;mixed &lt;strong&gt;pathinfo&lt;/strong&gt; ( string $path [, int $options] )&lt;br /&gt;//回傳一個檔案相關資訊的陣列&lt;br /&gt;&lt;br /&gt;bool&lt;strong&gt; rmdir&lt;/strong&gt; ( string $dirname [, resource $context] )&lt;br /&gt;//刪除資料夾(注意權限)&lt;br /&gt;&lt;br /&gt;bool &lt;strong&gt;mkdir&lt;/strong&gt; ( string $pathname [, int $mode [, bool $recursive [, resource $context]]] )&lt;br /&gt;//嘗試建立資料夾(注意權限)&lt;br /&gt;&lt;br /&gt;bool &lt;strong&gt;chdir &lt;/strong&gt;( string $directory )&lt;br /&gt;//改變當前工作目錄&lt;br /&gt;&lt;br /&gt;使用函示來瀏覽目錄:&lt;br /&gt;resource &lt;strong&gt;opendir&lt;/strong&gt; ( string $path [, resource $context] )&lt;br /&gt;//開啟目錄&lt;br /&gt;&lt;br /&gt;string &lt;strong&gt;readdir &lt;/strong&gt;( resource $dir_handle )&lt;br /&gt;//讀取目錄&lt;br /&gt;&lt;br /&gt;void &lt;strong&gt;rewinddir&lt;/strong&gt; ( resource $dir_handle )&lt;br /&gt;//回到目錄開頭&lt;br /&gt;&lt;br /&gt;void &lt;strong&gt;closedir&lt;/strong&gt; ( resource $dir_handle )&lt;br /&gt;//關閉目錄&lt;br /&gt;&lt;br /&gt;使用dir類別來瀏覽目錄:&lt;br /&gt;class Directory {&lt;br /&gt;Directory ( string $directory )&lt;br /&gt;string &lt;strong&gt;path&lt;/strong&gt;&lt;br /&gt;resource &lt;strong&gt;handle&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;string &lt;strong&gt;read&lt;/strong&gt; ( void )&lt;br /&gt;void &lt;strong&gt;rewind &lt;/strong&gt;( void )&lt;br /&gt;void &lt;strong&gt;close&lt;/strong&gt; ( void )&lt;br /&gt;}&lt;br /&gt;例:&lt;br /&gt;$d = dir("/etc/php5");&lt;br /&gt;echo "Handle: " . $d-&gt;handle . "\n";&lt;br /&gt;echo "Path: " . $d-&gt;path . "\n";&lt;br /&gt;while (false !== ($entry = $d-&gt;read())) {&lt;br /&gt;echo $entry."\n";&lt;br /&gt;}&lt;br /&gt;$d-&gt;close();&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-6810092470712073401?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/6810092470712073401/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=6810092470712073401' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/6810092470712073401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/6810092470712073401'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/03/php_14.html' title='php-檔案存取'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-1210220692289091403</id><published>2008-03-13T15:32:00.003+08:00</published><updated>2008-03-13T16:26:42.009+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>php-POSIX正規表示式(regular expression)</title><content type='html'>php 相關 function:&lt;br /&gt;int &lt;span style="font-weight: bold;"&gt;ereg&lt;/span&gt; ( string $pattern, string $string [, array &amp;amp;$regs] )&lt;br /&gt;//Searches a string for matches to the regular expression given in pattern in a case-sensitive way.&lt;br /&gt;&lt;br /&gt;string &lt;span style="font-weight: bold;"&gt;ereg_replace&lt;/span&gt; ( string $pattern, string $replacement, string $string )&lt;br /&gt;//scans string for matches to pattern, then replaces the matched text with replacement.&lt;br /&gt;&lt;br /&gt;array &lt;span style="font-weight: bold;"&gt;split&lt;/span&gt; ( string $pattern, string $string [, int $limit] )&lt;br /&gt;//Splits a string into array by regular expression.&lt;br /&gt;&lt;br /&gt;array &lt;span style="font-weight: bold;"&gt;explode&lt;/span&gt; ( string $delimiter, string $string [, int $limit] )&lt;br /&gt;//比 split 快, 但不支援多位元&lt;br /&gt;&lt;br /&gt;使用方法:&lt;br /&gt;正規表示式須放在單引號中&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;字元類別&lt;/span&gt;: 用 [ ] 包圍, 方括符內的任一字元都算&lt;br /&gt;連字元 [a-z]、[A-Z]、[0-9]  可連用如: [A-Za-z0-9], 若寫為[A-z]則也包含[]^_等字元, 但寫為[a-Z]則不合法, 因為 Z 的ASCII編碼在 a 前面&lt;br /&gt;^字元, 表示互斥, 例: [^aeiou]表示除aeiou這五個字元之外的都算&lt;br /&gt;&lt;br /&gt;POSIX 命名字元類別有:(需在字元類別內使用)&lt;br /&gt;[:alnum:]  --ASCII字母及數字, 相當於[A-Za-z0-9]&lt;br /&gt;[:alpha:]  --ASCII字母, 相當於[A-Za-z]&lt;br /&gt;[:blank:]  --空格及tab, 相當於[ \t]&lt;br /&gt;[:space:]  --空白字元(空格、換行、tab及垂直tab), 相當於[\n\r\t \x0b]&lt;br /&gt;[:cntrl:]  --不可列印的控制字元, 相當於[\x01-\x1f]&lt;br /&gt;[:digit:]  --相當於[0-9]&lt;br /&gt;[:lower:]  --相當於[a-z]&lt;br /&gt;[:upper:]  --相當於[A-Z]&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;邊界&lt;/span&gt;:&lt;br /&gt;[:&lt;:]  --右邊界 [:&gt;:]  --左邊界&lt;br /&gt;^  --字串開頭(元字元 metacharacter, 須在方括符外面使用)&lt;br /&gt;$  --字串結尾(元字元, 須在方括符外面使用)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;點號&lt;/span&gt;:&lt;br /&gt;. 點號代表任一單一字元, 實際字串中的點號需用 \. 轉義&lt;br /&gt;但是字元類別中的點號 . 就是代表點號&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;量詞&lt;/span&gt;:(quantifier)&lt;br /&gt;{min, max}  -- 出現的最小值與最大值&lt;br /&gt;*  --代表 {0,} 即  零或多&lt;br /&gt;+  --代表 {1,} 即  一或多&lt;br /&gt;?  --代表 零或一 (可以不出現, 但若出現只能一次)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;分組&lt;/span&gt;:&lt;br /&gt;使用 ( ) 小括符將字串包圍, 但要注意使用分組則效能會較差, 可搭配序列分割符號 | 使用&lt;br /&gt;例:&lt;br /&gt;(very{1,})&lt;br /&gt;(good|awesome|amazing)&lt;br /&gt;&lt;br /&gt;反向引用: (back reference)&lt;br /&gt;php的POSIX正規表示式中將分組命名為 \1, \2, ... ,  \n (其中 n 只能到 9)&lt;br /&gt;\0 表示引用整個字串&lt;br /&gt;例:&lt;br /&gt;$replaced = ereg_replace('([%;])', '\\\1', $myString)&lt;br /&gt;就將 $myString 中的 % 或 ; 符號替換成 \ 符號&lt;br /&gt;(\\代表跳脫轉義的 \ 而後面的 \1 則是反向引用)&lt;br /&gt;&lt;br /&gt;綜合範例:&lt;br /&gt;&lt;br /&gt;[[:alnum:] _-]{6,30}&lt;br /&gt;代表大小寫字母與數字還有空格, 底線, 橫線都接受, 最少6字元最大30字元&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-1210220692289091403?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/1210220692289091403/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=1210220692289091403' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1210220692289091403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1210220692289091403'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/03/php-posixregular-expression.html' title='php-POSIX正規表示式(regular expression)'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-4337717216202809235</id><published>2008-03-10T13:43:00.002+08:00</published><updated>2008-03-10T15:47:48.001+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>php-Cookie 與 Session</title><content type='html'>bool &lt;strong&gt;setcookie&lt;/strong&gt; ( string $name [, string $value [, int $expire [, string $path [, string $domain [, bool $secure [, bool $httponly]]]]]] )&lt;br /&gt;//設定cookie, , 該行前不能有任何空白, 否則等於有輸出&lt;br /&gt;$expire 設為 0 表示為 session cookie(只存在記憶體中, 而不是硬碟中 )&lt;br /&gt;$path 為 cookie 的有效範圍, 若設為"/" 表示對此網站任何目錄下的頁面都有效&lt;br /&gt;$domain 該 cookie 有效的域名&lt;br /&gt;$secure 設為 1 時, 表示只在 HTTPS 有效&lt;br /&gt;&lt;br /&gt;刪除cookie:&lt;br /&gt;設定已經過去的時間, cookie 就會被客戶端清掉&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Session:&lt;br /&gt;Session 使用 Session cookie, 並用 Session ID 跟客戶端連接起來&lt;br /&gt;&lt;br /&gt;string &lt;strong&gt;session_name&lt;/strong&gt; ( [string $name] )&lt;br /&gt;//Get and/or set the current session name&lt;br /&gt;&lt;br /&gt;bool &lt;strong&gt;session_start&lt;/strong&gt; ( void )&lt;br /&gt;//建立session, 若要使用有名稱的session 則需先呼叫session_name ( [string $name] )&lt;br /&gt;&lt;br /&gt;string &lt;strong&gt;session_cache_limiter&lt;/strong&gt; ( [string $cache_limiter] )&lt;br /&gt;//參數說明: 'nocache' 不允許任何 client/proxy 快取; 'public' 允許快取; 'private' 不允許 proxy 但允許 client 快取; 使用時須在 session_start 呼叫前&lt;br /&gt;&lt;br /&gt;int session_cache_expire ( [int $new_cache_expire] )&lt;br /&gt;//設定/查詢快取失效期限, 回傳值為新的快取期限, 單位為分鐘, 預設為 180 (即 3 小時)&lt;br /&gt;&lt;br /&gt;刪除 session: 三步驟:&lt;br /&gt;一)&lt;br /&gt;bool session_destroy ( void )&lt;br /&gt;//Destroys all data registered to a session&lt;br /&gt;二)&lt;br /&gt;setcookie(session_name(), '', time()-3600)&lt;br /&gt;//將客戶端的session cookie刪除,&lt;br /&gt;三)&lt;br /&gt;$_SESSION = array();&lt;br /&gt;//清空super global的 $_SESSION 陣列&lt;br /&gt;&lt;br /&gt;session 儲存:&lt;br /&gt;bool &lt;strong&gt;session_set_save_handler&lt;/strong&gt; ( callback $open, callback $close, callback $read, callback $write, callback $destroy, callback $gc )&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-4337717216202809235?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/4337717216202809235/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=4337717216202809235' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4337717216202809235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4337717216202809235'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/03/php-cookie-session.html' title='php-Cookie 與 Session'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-1736151880848107625</id><published>2008-03-09T21:28:00.002+08:00</published><updated>2008-05-26T21:02:39.460+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><title type='text'>php-物件導向 mysqli</title><content type='html'>連線:&lt;br /&gt;class mysqli {&lt;br /&gt;&lt;strong&gt;__construct&lt;/strong&gt; ( [string $host [, string $username [, string $passwd [, string $dbname [, int $port [, string $socket]]]]]] )}&lt;br /&gt;//Open a new connection to the MySQL server&lt;br /&gt;&lt;br /&gt;int &lt;strong&gt;mysqli_connect_errno&lt;/strong&gt; ( void )&lt;br /&gt;//Returns the last error code number from the last call to mysqli_connect()&lt;br /&gt;&lt;br /&gt;string &lt;strong&gt;mysqli_connect_error&lt;/strong&gt; ( void )&lt;br /&gt;//Returns the last error message string from the last call to mysqli_connect().&lt;br /&gt;&lt;br /&gt;檢索:&lt;br /&gt;class mysqli {&lt;br /&gt;mixed &lt;strong&gt;query&lt;/strong&gt; ( string $query [, int $resultmode] )&lt;br /&gt;}&lt;br /&gt;//Returns TRUE on success or FALSE on failure. For SELECT, SHOW, DESCRIBE or EXPLAIN mysqli_query() will return a result object.&lt;br /&gt;&lt;br /&gt;class mysqli_result {&lt;br /&gt;&lt;strong&gt;array fetch_assoc&lt;/strong&gt; ( void )&lt;br /&gt;}&lt;br /&gt;//以關聯式陣列形式傳回, 因此重複的列名只有最後一筆會包含, 當無下一筆時傳回 NULL&lt;br /&gt;&lt;br /&gt;class mysqli_result {&lt;br /&gt;mixed &lt;strong&gt;fetch_array&lt;/strong&gt; ( [int $resulttype] )&lt;br /&gt;}&lt;br /&gt;//傳回以數字為索引的陣列(不用擔心列名重複), 當無下一筆時傳回 NULL&lt;br /&gt;&lt;br /&gt;轉義以過濾輸入值(防止 injection attack):&lt;br /&gt;class mysqli {&lt;br /&gt;string &lt;strong&gt;escape_string&lt;/strong&gt; ( string $escapestr )&lt;br /&gt;string &lt;strong&gt;real_escape_string&lt;/strong&gt; ( string $escapestr )&lt;br /&gt;}&lt;br /&gt;//過濾傳入的字串, 轉義以下特殊符號 NUL (ASCII 0), \n, \r, \, ', ", Control-Z&lt;br /&gt;&lt;br /&gt;交易處理(transaction):&lt;br /&gt;class mysqli {&lt;br /&gt;&lt;strong&gt;bool autocommit&lt;/strong&gt; ( bool $mode ) //開啟或關閉自動提交, 建議關閉&lt;br /&gt;bool &lt;strong&gt;commit&lt;/strong&gt; ( void )&lt;br /&gt;bool &lt;strong&gt;rollback&lt;/strong&gt; ( void )&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;預備敘述( Prepared Statements ):&lt;br /&gt;class mysqli {&lt;br /&gt;mysqli_stmt &lt;strong&gt;prepare&lt;/strong&gt; ( string $query )&lt;br /&gt;}&lt;br /&gt;//產生 mysqli_stmt 物件, $query 中欄位參數的值應以 ? 取代&lt;br /&gt;&lt;br /&gt;class mysqli_stmt {&lt;br /&gt;bool &lt;strong&gt;bind_param&lt;/strong&gt; ( string $types, mixed &amp;amp;$var1 [, mixed &amp;amp;$...] )&lt;br /&gt;//綁定參數, 將值與參數名稱指定給 mysqli_stmt 物件&lt;br /&gt;&lt;br /&gt;bool &lt;strong&gt;bind_result&lt;/strong&gt; ( mixed &amp;amp;$var1 [, mixed &amp;amp;$...] )&lt;br /&gt;//綁定結果(將結果綁定到 php 變數上)&lt;br /&gt;&lt;br /&gt;bool fetch ( void )&lt;br /&gt;//將綁定結果依序放入敘述中, 成功傳回 True, 失敗傳回 False, 沒有值時傳回 Null&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-1736151880848107625?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/1736151880848107625/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=1736151880848107625' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1736151880848107625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1736151880848107625'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/03/php-mysqli.html' title='php-物件導向 mysqli'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-1290722727621339954</id><published>2008-03-09T12:48:00.002+08:00</published><updated>2008-03-09T13:17:18.601+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DB'/><title type='text'>MySQL資料庫操作-插入資料</title><content type='html'>&lt;strong&gt;從檔案一次插入多筆資料:&lt;/strong&gt;&lt;br /&gt;LOAD DATA LOCAL INFILE '檔案名'&lt;br /&gt;    INTO TABLE '資料表名稱'&lt;br /&gt;    FILEDS TERMINATED BY '欄位分隔符號'&lt;br /&gt;        OPTIONALLY ENCLOSED BY '欄位包圍符號'&lt;br /&gt;    LINES TERMINATED BY '行結束符號';&lt;br /&gt;例:&lt;br /&gt;LOAD DATA LOCAL INFILE 'myfile.txt'&lt;br /&gt;     INTO TABLE 'tbMyTable'&lt;br /&gt;    FILEDS TERMINATED BY ','&lt;br /&gt;        OPTIONALLY ENCLOSED BY ' " '&lt;br /&gt;    LINES TERMINATED BY '\r\n';&lt;br /&gt;表示在 tbMyTable 中插入 myfile.txt 裡的資料&lt;br /&gt;檔案中欄位的內容都用雙引號包圍並以逗號分隔, 該檔案是使用windows的分行方式&lt;br /&gt;&lt;br /&gt;操作時要注意客戶端的權限!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-1290722727621339954?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/1290722727621339954/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=1290722727621339954' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1290722727621339954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/1290722727621339954'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/03/mysql_09.html' title='MySQL資料庫操作-插入資料'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5631781275095132276.post-4212999457584825860</id><published>2008-03-09T10:56:00.005+08:00</published><updated>2008-03-09T21:28:07.479+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>簡易SQL語法</title><content type='html'>Select :&lt;br /&gt;&lt;strong&gt;SELECT 欄位&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;FROM 資料表&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;[LIMIT 索引數, 資料筆數]&lt;/strong&gt;&lt;br /&gt;(LIMIT 是分頁用的, 索引數從零開始, 資料筆數是每頁多少筆資料)&lt;br /&gt;&lt;br /&gt;Distinct ( 取不重複的值 ):&lt;br /&gt;&lt;strong&gt;SELECT DISTINCT 欄位&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;FROM 資料表 &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Where :&lt;br /&gt;&lt;strong&gt;SELECT 欄位&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;FROM 資料表 &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;WHERE 條件&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Inner Join:&lt;br /&gt;&lt;strong&gt;SELECT 欄位1, 欄位2, ... , 欄位n &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;FROM 資料表1 &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;INNER JOIN 資料表2 &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;ON 資料表1.依據欄位 = 資料表2.依據欄位 &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;[WHERE 條件]&lt;/strong&gt;&lt;br /&gt;(結合表格 1 的依據欄位跟表格 2 依據欄位相等的資料)&lt;br /&gt;&lt;br /&gt;And/Or :&lt;br /&gt;&lt;strong&gt;SELECT 欄位&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;FROM 資料表&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;WHERE 簡單條件 {[ANDOR] 簡單條件}+&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;In :&lt;br /&gt;&lt;strong&gt;SELECT 欄位&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;FROM 資料表&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;WHERE 欄位 IN ('值1', '值2', ...)&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Between :&lt;br /&gt;&lt;strong&gt;SELECT 欄位&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;FROM 資料表&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;WHERE 欄位 BETWEEN 值1 AND 值2&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Like :&lt;br /&gt;&lt;strong&gt;SELECT 欄位&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;FROM 資料表&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;WHERE 欄位 LIKE {模式}&lt;/strong&gt;&lt;br /&gt;( _ 底線代表一字元, % 符號代表零或多)&lt;br /&gt;&lt;br /&gt;Order By :&lt;br /&gt;&lt;strong&gt;SELECT 欄位 &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;FROM 資料表&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;[WHERE 條件]&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;ORDER BY 欄位 [ASC, DESC]&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Count (計算筆數):&lt;br /&gt;&lt;strong&gt;SELECT COUNT(欄位) &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;FROM 資料表&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;[WHERE 條件]&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;MySQL支援的數值函數:&lt;br /&gt;COUNT, SUM, MAX, MIN, AVG&lt;br /&gt;MySQL支援的字串函數: LOWERUPPER&lt;br /&gt;SUBSTRING(欄位名, 1起算的起始索引, 字數)&lt;br /&gt;INSTR(搜尋欄位, 搜尋字串)&lt;br /&gt;CONCAT(值1,值2, ... ,值n)&lt;br /&gt;TRIM&lt;br /&gt;&lt;br /&gt;MySQL支援的日期時間函數:&lt;br /&gt;NOW&lt;br /&gt;YEAR&lt;br /&gt;MONTH&lt;br /&gt;DAYOFMONTH&lt;br /&gt;DAYOFWEEK&lt;br /&gt;DAYOFNAME&lt;br /&gt;&lt;br /&gt;DATE_FORMAT(欄位, 模式)&lt;br /&gt;( %Y 年份4碼, %y 年份2碼, %M 字串月份, %m 數字月份, %D 字串天 %d 數字天,&lt;br /&gt;%W 字串星期幾, %w 數字星期幾, %H 字串2碼小時24時制, %h 字串2碼小時12時制,&lt;br /&gt;%i 分鐘, %s 秒數, %p AM或PM, ...)&lt;br /&gt;&lt;br /&gt;Group By :&lt;br /&gt;&lt;strong&gt;SELECT 欄位1, SUM(欄位2) &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;FROM 資料表&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;GROUP BY 欄位1&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Having (函數條件):&lt;br /&gt;&lt;strong&gt;SELECT 欄位1, SUM(欄位2 )&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;F&lt;/strong&gt;&lt;strong&gt;ROM 資料表&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;GROUP BY 欄位1 &lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;HAVING 函數條件&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Alter :&lt;br /&gt;(修改資料表--操作時會鎖定表且占用大量硬碟空間, 除非必要否則不要使用)&lt;br /&gt;ALTER TABLE 資料表&lt;br /&gt;ADD 欄位 資料類型 屬性 ...&lt;br /&gt;[FIRST/AFTER 欄位];&lt;br /&gt;&lt;br /&gt;ALTER TABLE 資料表&lt;br /&gt;DROP COLUMN 欄位;&lt;br /&gt;&lt;br /&gt;ALTER TABLE 資料表&lt;br /&gt;CHANGE COLUMN 欄位 資料類型 屬性 ...;&lt;br /&gt;&lt;br /&gt;ALTER TABLE 資料表&lt;br /&gt;RENAME AS 資料表新名稱;&lt;br /&gt;&lt;br /&gt;Create Table :&lt;br /&gt;&lt;strong&gt;CREATE TABLE "表格名"("欄位 1" "欄位 1 資料種類","欄位 2" "欄位 2 資料種類"",... )&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Drop Table :&lt;br /&gt;&lt;strong&gt;DROP TABLE "表格名"&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Truncate Table (清空表格但保留架構):&lt;br /&gt;&lt;strong&gt;TRUNCATE TABLE "表格名"&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Insert Into&lt;br /&gt;&lt;strong&gt;INSERT INTO "表格名" ("欄位1", "欄位2", ...)&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;VALUES ("值1", "值2", ...)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Update&lt;br /&gt;&lt;strong&gt;UPDATE "表格名"&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;SET "欄位1" = [新值]&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;WHERE {條件}&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;strong&gt;&lt;/strong&gt;Delete From&lt;br /&gt;&lt;strong&gt;DELETE FROM "表格名"&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;WHERE {條件} &lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5631781275095132276-4212999457584825860?l=edscb.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edscb.blogspot.com/feeds/4212999457584825860/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=5631781275095132276&amp;postID=4212999457584825860' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4212999457584825860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5631781275095132276/posts/default/4212999457584825860'/><link rel='alternate' type='text/html' href='http://edscb.blogspot.com/2008/03/sql_09.html' title='簡易SQL語法'/><author><name>Edward</name><uri>http://www.blogger.com/profile/18442558972147727398</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_HQaeOFYRlT4/R3hR5uDi2TI/AAAAAAAAAAw/Atwo-lYuxWU/S220/ed_logo_03.png'/></author><thr:total>0</thr:total></entry></feed>
