發表文章

ActionScript的Dictionary

當作動態集合時, Dictionary 跟Object的功能很類似,唯一的不同點就是Dictionary可以設定為弱引用,這樣當Dictionary中紀錄了大量的資料時,可以自行識別集合中的物件是否已經剩下Dictionary中才存在了,是的話就會把引用從Dictionary中移除,如此一來可以讓Dictionary集合的記憶體使用比較有效率。

ActionScript使用原生 JSON 功能

ActionScript在Flash Player 11.0以上開始原生地支援JSON了,官方中文文件可見  使用原生 JSON 功能  和  API Reference 。 節錄官方API的目錄: JSON API 概觀 toJSON() 方法 定義自訂 JSON 行為 在內建類別的原型定義 toJSON() 定義或覆寫類別層級的 toJSON() 使用 JSON.stringify() replacer 參數 使用 JSON.parse() reviver 參數 剖析範例

Cast String to numbers

轉換成整數 int string = "5"; num = parseInt(string); 轉換成浮點數 Number num = Number(string); num = parseFloat(string);

Unload Flex Module Completely?

Flex內部有提供Module的機制,透過Module的設計,可以把主程式切分成幾個swf,然後在需要的時候才去動態 loading和 instantiated,這樣作理論上可以調控網路使用量和記憶體使用量...可是... 這個機制加載時沒問題(目前),但是移除(unload)時卻是問題重重,最大的問題就是,移除掉module後原本佔用的記憶體永遠不會被釋放, 爬了很多文,發現有一些work around的撇步 ,稍微試了一下結果還是行不通: What We Know About Unloading Modules   Unloading modules completely, MXML   問題的關鍵應該是Flex內部有某些物件始終cache住讀進來的 module的 reference,導致即使表面上以為刪除,但實際上卻永遠不會被垃圾蒐集。時間關係,目前先不考慮用Module來做想要的功能了。

C++版的Tweener : cppTweener

根據短期內開發C++ GUI的經驗,不知道什麼原因,C++的GUI 開發似乎不是很流行類似Tweener ( http://labs.zeh.com.br/blog/?p=95 ) 這樣的工具。在開發Flash專案的時候,有tween沒tween的GUI,效果真是天差地遠,要做流暢的介面始終少不了這類的工具。 曾經用過的Qt framework (open source版)有內建類似的工具,不過在Qt中該工具的設計和內建的function數量,與任一個Flash的 Tweening library比起來還是差多了,甚至最近在測試的兩個3D Engine裡也都沒有這種工具的蹤影。 最近在開發專案的時候,再搜尋了一次,這次發現有人把Tweener porting到c++版了: cpptweener  , 在該project首頁可以找到簡單的教學和demo video。port到C++以後,架構上做了一點更動,整個工具調整成單純是做數學運算,所以也就不依賴任何的GUI framework,只要標準的C++ Standard Library就可以用了。

[Android] 偵測screen size的方法

Configuration conf = this.getResources().getConfiguration(); if((conf.screenLayout&Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_SMALL){ Toast.makeText(getBaseContext(), "SCREENLAYOUT_SIZE_SMALL" , Toast.LENGTH_LONG).show(); } else if((conf.screenLayout&Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_NORMAL){ Toast.makeText(getBaseContext(), "SCREENLAYOUT_SIZE_NORMAL" , Toast.LENGTH_LONG).show(); } else if((conf.screenLayout&Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE){ Toast.makeText(getBaseContext(), "SCREENLAYOUT_SIZE_LARGE" , Toast.LENGTH_LONG).show(); }

[Android] Android 開發環境建立

圖片
開發的第一步當然就是建立開發環境,全部建立的過程只需要參考Android developer官方網站http://developer.android.com/sdk/index.html。這邊只是重點式地分享我walk through整個安裝過程的步驟(目前Android的版本是2.2。我的環境是Mac OSX 10.6): (1) Quick Start 是很概觀的介紹,詳細步驟要參考 Installing the SDK (2) 所謂的下載和安裝android sdk,其實是先下載 Android SDK Starter Package,就是一套協助使用者安裝各式各樣工具的工具,然後再利用這套工具去下載需要的版本的sdk, api, driver,starter也用來執行模擬器。 在Mac上面要多一個步驟,這邊我先跳過,結果後面一樣可以HelloWorld。 (3) 然後執行sdk底下的"android",開啟starter。選擇要安裝的component和設定Virtual Device。 (4) 然後就是下載和安裝Eclipse開發工具,然後安裝Eclipse的開發Android外掛 ADT (5) 接下來就可以成功運行 Hello World Tutorial 的範例了。發現由eclipse啟動模擬器時,模擬器會關不掉,所以改為自行啟動starter來執行模擬器比較好,這邊啟動的模擬器一樣可以從eclipse連結過來測試。