星期六, 2月 27, 2010

ActionScript 3.0 中的 stage, root, MainTimeline

學了不算短的Flash還是沒有很瞭解stage, root, MainTimeline的差異

swf.com.tw - ActionScript 3.0里的stage(舞台), root和MainTimeline(主時間軸)
這篇的解釋非常詳細,也讓我很清楚的瞭解其中的差異

另外也做了個小實驗,發現Flash和Flex指的是不同的東西:

flash 下
trace(this, this.root, this.stage, root, stage, this==this.root, this.root == root, this.stage == stage);
[object Story] [object Story] [object Stage] [object Story] [object Stage] true true true


flash builder 4 下
trace(this, this.root, this.stage, root, stage, this==this.root, this.root == root, this.stage == stage);
WebometricsRanking null null null null false true true

Flash應用程序的內存管理機制和優化方法

Check out this SlideShare Presentation:

用C#操作Xml

Xml的操作應該是非常常用的技巧
前陣子做的抓學校流量的程式
也就是把網頁上的東西撈下來分析而已XD

以下是一些在學的時候參考的網頁

NaCl- C# xml的操作
非常推薦先看完這篇,主要是講較常用的Class: XmlDocument的用法
基本上的東西都可以在這邊了解

接下來不懂的就慢慢翻MSDN了吧XDD



其他參考
yilinliu - [c#]Regular Expression抓取/取代特定資料的說明
KKcat ^_^ - xml大全加自己的一點心得

為甚麼不能用su? - Ubuntu 9.10 的root權限

剛用VirtualBox灌完Ubuntu ,要安裝一點更新,結果竟然發現不能用su
找到一些資料,隨手做個筆記。

Ubuntu安裝後,root用戶默認是被鎖定了的,不允許登錄,也不允許「su」到root。有人說這是個不好的實踐,特別是對於服務器來說。我覺得對於桌面用戶來說,這樣安全性更高一些,是應該的;但對於服務器可以設置成「允許su 到root,但不允許root用戶直接登錄」。

Workspace in use or cannot be created, choose a different one. (Flex & Eclipse)

今天不小心把專案關掉了,結果想要再開竟然跳出Workspace in use or cannot be created, choose a different one這個錯誤,真是嚇出我一身冷汗XD

找了一下解決方法:


解決辦法:出現這種情況一般是workspace的配置文件中出現了.lock文件(workspace/.metadata/.lock),鎖定了workspace.把.lock文件刪除即可.

不過呢..刪掉之後我還是開不起來...
後來才發現Flex 開啟的時候會把專案開在Package Explorer裡面..囧
所以最後從那邊開就好了

星期一, 2月 15, 2010

ActionScript3.0 中的事件流(Event)

說要記錄一下自己對AS3事件的心得
可是拖了好久..想寫什麼大概也忘了

手邊有一些資料,姑且記錄一下吧~

以下節錄自SILK ROUTE - AS3筆記-事件流(event flow)
寫的很棒,非常建議先讀過

Flex Builder快捷建

Ctrl-F11: 執行(Run)
F11: 除錯(Debug)
Ctrl-Alt-Down: 重複目前所在編輯列(Repeat current line )
Alt-Up: 移動本列,或選擇列往上移動(Move line (or selection) up )
Alt-Down: 移動本列,或選擇列下往移動(Move line (or selection) down )
Ctrl-Click: 移至定義區(Go to definition (also F3) )
Ctrl-D: 刪除本列(Delete line )
Alt-/: 文字自動完成(Word completion (cycles through possible matches))
Ctrl-Up: 捲軸向上(Scroll up )
Ctrl-Down: 捲軸向下(Scroll Down )

星期四, 2月 04, 2010

swfloader vs Loader !! swfloader 只是方便而已..

因為swfloader的方便,原本想用它直接讀swf檔就好了,後來發現他沒有loader的靈活..
加上不知道怎麼樣讓被讀取的swf和讀取者溝通
(把bubble設成true可以單方向溝通,但是不能用sharedEvents,這個部分我另外PO文記錄)
後來整個翻新成用loader,做白工了 囧

以下就介紹一下swfloader

Function中傳遞不定多個參數(.apply() , .call() ) :: 改善doNext

以function 當作 object :: 實作 doNext 之後,又注意到Function內的一個方便的函數

apply(thisArg:*, argArray:*):*
call(thisArg:*, ... args):*

最大的不同就是apply是將參數指定為一個 Array 對象。
如果在腳本實際執行前,無法知道要傳遞的參數的數量,那麼這種方法通常很有用。
(官方文件 : ActionScript 3.0 語言和組件參考 - Function)

AS3 的 Dictionary Class

一開始還有點搞不懂Dictionary到底是什麼
後來發現她就跟Object一樣是hash表

不過有點不一樣的是,Dictionary可以用Object當作Key..
實在太神奇了XD


關聯數組有時候也稱為「哈希」或「映射」,它使用「鍵」而非數字索引來組織存儲的值。關聯數組中的每個鍵都是用於訪問一個存儲值的唯一字符串。關聯數組為 Object 類的實例,也就是說每個鍵都與一個屬性名稱對應。關聯數組是鍵和值對的無序集合。在代碼中,不應期望關聯數組的鍵按特定的順序排列。
ActionScript 3.0 中引入了名為「Dictionary」的高級關聯數組。字典是 flash.utils 包中 Dictionary 類的實例,使用的鍵可以為任意數據類型,但通常為 Object 類的實例。換言之,字典的鍵不侷限於 String 類型的值。
as3,Dictionary,關聯數組


節錄Kimo Chung's AS3 Playground - 秘技: 用Sprtie & Dictionary 熷加自定的variables 而不改變Sprite 的結構的例子


使用Dictionary 和Array 有何分別呢?
Array 使用object.toString() 作為index, 因此若果有兩個Sprite 的名稱相同, 會使用同一格


var myPictureIndexDict = new Dictionary;
var myPictureIndexArray = new Array;

var a = new Sprite;
a.name = "myName";
myPictureIndexDict[a] = 1;
myPictureIndexArray[a] = 1;

var b = new Sprite;
b.name = "myName";
myPictureIndexDict[b] = 2;
myPictureIndexArray[b] = 2;

trace(myPictureIndexDict[a]); //output: 1
trace(myPictureIndexArray[a]); //output: 2


延伸閱讀
Ticore's Blog - AS3 Dictionary 居然無法用 QName 當 Key

add MovieClip by addChild in Flex4

為什麼Flex內不能直接用addChild呢?
mybeky's blog -
Flex Application裡的addChild()
節錄一些句子:

在Flex Application裡,是不能直接用addChild添加Sprite,MovieClip等來自flash.display包裡的類的。譬如以下代碼就會報錯:
private function init():void { var sp:Sprite = new Sprite(); addChild(sp);}
這是因為Application的addChild方法並非完全繼承自DisplayObjectContainer,而是在Container那裡被重寫了,雖然參數child的類型是DisplayObject,但是它必須實現IUIComponent接口(所有Flex組件都實現了這一接口),才能添加。

Html5 vs Flash


最近在學Flash,也正巧注意到Html5這個新東西。

Html5看起來似乎方便許多,許多的標籤也更符合需求也更人性化
flash如果不努力一點,說不定會被追過呢

說實在的也不知道未來會怎麼發展,不過我自己在猜
或許Flash會靠ActionScript3.0變得較偏程式設計這塊也說不定。

星期二, 2月 02, 2010

Flex Metadata tag

Flex 組件的大小與各個屬性的差異

組件的大小(size)就是指組件的高度和寬度。查看Flex幫助,可以看出關於Flex組件大小的屬性有很多,以寬度為例,有以下有關寬度的屬性:

* width
* maxWidth
* minWidth
* explicitWidth
* explicitMaxWidth
* explicitMinWidth
* measuredWidth
* measuredMinWidth
* percentWidth
* scaleX
* 以及組件的MXML標記中的width屬性。

stage.scaleMode 的差別

scaleMode屬性
scaleMode:String  [讀寫]
語言版本: ActionScript 3.0
執行階段版本: AIR 1.0 Flash Player 9