2006年3月23日 星期四

ActionScript 3.0 beta 2 Bound Function   [+/-]

Ticore's Blog

AS 3.0 有一個很重要的特色是可以綁定的函式
在 AS 2.0 之前,由於是使用 prototype 模擬出來的 OO
function 非常自由,可以任意傳遞出去
應用 (apply、call) 在其它的Object上
function 中的 this 參考也跟著到處改變
但是這樣也會造成委任(delegate)的困擾

AS 3.0 的 OO 已經不再是模擬出來的
實體的方法可以被傳遞出去
指定給新的參考,透過新的參考被其它物件呼叫執行
但是方法本身執行的對象卻是綁死在原本實體上

以下就不同種類的 function bound 特性做一個整理:


Bounded "this" reference in function Function as object
Instance method
(non-static function)
Yes Point to instance object No
Class method
(static function)
Yes Illegal No
Package function Yes Point to AS file's global object No
Function literal No Depend on object holding the function Yes

Read more...

2006年3月17日 星期五

DW 8 讓Flash Text可以使用中文字型   [+/-]

Ticore's Blog

Dreamweaver插入Flash Text的功能
似乎把雙位元字型濾除掉了
可以透過修改DW內部 JS 程式的方式解除限制
會有什麼衍伸問題,我也不知道
至少在DW 8上是還OK

首先把 Flash Text.js 這個檔案找出來
預設的位置應該是
C:Program FilesMacromediaDreamweaver 8ConfigurationCommandsFlash Text.js

用文字編輯器打開 (記得要先備份喔)
搜尋 "filterFonts",並且移除掉所有的 "filterFonts"

然後存檔,重新啟動 Dreamweaver 8
就可以在 Flash Text 中使用中文字型了

Read more...

2006年3月15日 星期三

ActionScript 3.0 beta 1 Global Object   [+/-]

Ticore's Blog

ActionScript 3 Language Specification
雖然有定義 Global Object 但是那是不可以直接參考到的
也不能夠自行添加變數進去

但是我在測試另一個特性 Bound Method 時候
分別在不同情況下,追蹤 function 內的 this 參考
原本 Unbound Function 內的 this 參考
是依據持有物件或是被 apply 所指定
而在匿名函式或是透過一個區域變數參考到的 Unbound Function 內
『this』會指向一個 Global Object 的參考
這個 Global Object 可以被 return、存取變數

仔細測試之後發現
每一個 Class 與 Package Function 都有各自獨立的一個 Global Object
(PS. AS 3.0 beta 1 一個 *.as 檔案只能有一個 Class 或是一個 Package Function、Package Namespace)
極有可能與 AS 檔案 Scope 有關,但是因為 Interface、Namespace 內無法宣告可執行敘述~~~~

無論在哪哩,只要有匿名函式就可以取得該 Global Object

var global:Object = function():Object{return this;}();

而且對此物件存入的資料也可以在該 Class or Function Files 其它地方取回
行為真的很像是 AS File 的 Global
但是並沒有辦法像真正的 Global 那樣作隱含式的參考
直接取得沒有宣告的變數,會在編譯期發生錯誤
用關聯陣列也會在執行期發生錯誤
非得要匿名函式才可以取得

2009/05/28 補充

後來又發現可以直接用 delete [String] 快速刪除 global 物件內的資料

var global:* = function(){return this;}();
global["p" + 1] = 10;
trace(global["p" + 1]); // 10
delete ("p" + 1);// 快速刪除 global object 內的資料
trace(global["p" + 1]); // undefined

不過好像沒有快速宣告的方法

Read more...

2006年3月10日 星期五

Java 文件編碼偵(猜)測程式   [+/-]

Ticore's Blog

相信不少人都遇過編碼的問題
這問題也非常令人頭痛
假如程式可以自動偵測編碼該多好

用Google一找,找到兩個
分別是 Chinese Encoding GuesserMozilla charset detector
後者就是 Mozilla 在用的編碼檢測 Java 版

試用的結果 前者效果似乎不錯
但是它只會得到一個偵測結果
而 Mozilla 版的效果欠佳
尤其是 Big5 編碼偵測結果幾乎都錯
難怪 Mozilla、Firefox 瀏覽器自動偵測效果不好.....

不過它的特色是幾乎涵蓋大部分編碼種類
而且猜測的結果不只一個
也可以預設猜測的語言種類

這兩種都可以針對位元陣列、檔案或者是一個URL來作偵測

Read more...

2006年3月7日 星期二

FlashLite 2.0 Sound 測試   [+/-]

Ticore's Blog

FlashLite 2.0 終於支援 Sound 相關的控制
也可以動態讀取外部 mp3 檔案
但是測試的時候發現
外部 mp3 撥放功能缺陷相當多
讓我一度懷疑拿到的 Player 是不是 Alpha 版

而且這些缺陷,在文件上完全沒有說明
真是惡劣~~

以下就是 FlashLite 2.0 撥放外部 mp3 缺陷列表:

  1. 預設撥放音量遠大於標準撥放音量
  2. 無法使用 setVolume 控制音量,加上缺點 1.,我測試的時候耳朵都快聾了
  3. 外部 mp3 不能以串流方式撥放,必須要等到全部讀取完畢
  4. 外部 mp3 檔案大小不可以超過 1 mb
  5. 外部 mp3 檔案大小在數百 kb 左右時,雖然可以撥放,但是假如反覆 load、play,仍然容易當掉
  6. Sound.start() 第一個參數 offset 功能完全無效
  7. Sound.start() 第二個參數 loops 功能有缺陷,無法控制撥放次數,僅僅能決定是否重複撥放而已
  8. Sound.position 屬性無效,總是回傳 0
  9. Sound.duration 屬性無效,總是回傳 0

至於 setPan、setTransform 那些,我就不測試了
一方面手機聽不出來有立體聲
照上面的情況看起來,功能有缺陷的機率極高

id3相關功能是正常的,不過連音量都不能控制,支援id3要做什麼呢?

不要以為內嵌 mp3 就是正常的喔
仍然有 bug
祇是比較少而已

以上都是在 Nokia 7610 上作測試

Read more...

2006年3月6日 星期一

FlashLite 2.0 Capabilities 測試小程式   [+/-]

Ticore's Blog

FlashLite 2.0 的 Capabilities 可以用來偵測
該執行環境 Device OS 與 Player 的能力

不過手機要注意的規格相當多
所以 Capabilities 可以測試的項目也高達數十種

為了測試方便,把他稍作整理
寫成一個小程式

[1] ~ [7] : 選擇測試分類
[Down] : 向下捲動結果
[UP] : 向上捲動結果
[Right] : 下一頁
[Left] : 上一頁

測試程式網址

Read more...

2006年3月2日 星期四

FlashLite 2.0 SharedObject 測試   [+/-]

Ticore's Blog

這次 FlashLite 2.0 支援 SharedObject
不過與 PC 版的並不相同,而是衍伸的功能
文件上說的很清楚

「不支援 swf 檔案之間的資料共享,一旦 swf 修改過,即使檔名相同也會被認定是不同的版本,資料並非永遠持久,最舊的資料可能會被手機 OS 刪除」

最麻煩的是,連取得 SO 物件都要使用事件來做
可能是因為手機上存取速度太慢了

資料共享其實是可以做到的
我反覆測試的結果
發現 FlashLite 對於 swf 版本認定與存放路徑、檔名、修改時間都無關
而可能是與 swf 檔案本身 checksum 有關
與 PC 上的 Player 非常不同 (可以參考 SharedObject 共用以及存放位置)

所以只要複製相同的 swf,修改檔名
這兩個 swf 就可以共享資料了
雖然沒有什麼用處......哈

另外,FlashLite 2.0 可以使用的 SO 容量上限也小得多
在 Nokia 7610 上測試只有 4 kb 可用
真的是變成 Cookie 了

以上都是在 local file 上作測試
remote 測試太勞民傷財了,所以不做~~

Read more...