改良版 flash debugger

In actionscript, flash   September 5, 2005 - 1:57 am

*改良後的 DebuggerPanel 畫面

昨天的文章中提到使用 mtasc編譯swf時,沒辦法看到trace的結果,因此必需要採用某些外部的 logger來做這件事。

*Flash Debug Panel 雀屏中選

在把目前檯面上幾個常見的solution都玩過一遍後,我選擇了 keith peters 與 tim wailing 合作的 Flash Debug Panel

選擇它的原因是使用方法最簡單,提供的功能也最單純(就是 trace 跟 traceObject兩個method,其它雜七雜八的都不要),同時是open source,可以視需要修改。

Flash Debug Panel的使用方法非常簡單:

1、先將 Debug.as 這個class放到 flash 的 class path裏
2、使用時用下列語法:

Actionscript:
  1. Debug.trace("hello world");
  2. //or when dealing with object
  3. Debug.traceObject("objFooBar", 2);

其中 traceObject等於是一個簡化版的 object dumper,可以依指定的層級數將物件一層層的顯示出來。

使用這個class的附加好處是,由於method是封裝在 Debug這個class裏面,因此日後如果需要更完整的logging功能,例如寫入database或處理xml/web service 物件,也可以很輕易的做出來,只要對外的介面不變即可(這個叫 encapsulation,是使用OO的主要好處之一)

*Flash Debug Panel 的四個缺點

但Flash Debug Panel也有一些缺點(就我個人使用而言)

1、字太小小小小:我的螢幕解析度是 1600*1024,因此小於16px的字基本上都太吃力,而預設值是 10px,so....第一步就是先把字型改成 Tahoma 16px 這樣又大又清楚真是快樂啊~

2、只能透過FDP 文字框顯示訊息:由於用了這個Debug class後,以後所有的程式碼都要改成Debug.trace(),但我不見得只會用 mtasc 編譯,如果那天改回用mmc時,這些track訊息就看不到了,所以第二步就是加入也同步在flash output panel 顯示trace內容的功能(謝謝aral提供的小tips)

3、文字框捲軸不會自動捲動:通常當文字超過一頁時,scrollbar 的 scroller應該要自動捲動到最下方,這樣才能看到最新顯示的訊息,而不是每次都要手工捲動,因此第三步就是改程式碼讓scroller永遠捲到最下面。

4、介面太小:介面上有許多選項其實我用不到,而最常用的其實只有一個,就是 clear,平常在flash裏我也是一直按 F2做同樣的事,因此第四步就是把介面上不需要的controls拿掉,然後把clear button改的又長又寬,這樣就很難miss了。

改完上面四項後,發現還有一個更難纏的問題,原本 keith 有用C#將swf包裝過,因此可以勾選 always on top ,這樣 debug panel會永遠顯示在最上層,不會被其它程式蓋住,但我修改過的swf就無法更新進去,因此只能自已手工再包一次。

不過好險前一個案子買了 zinc 的 projector,裏面pc/mac/ppc一應俱全,所以只花幾分鐘勾幾個選項,就把swf包成exe檔,不但可以 最上層顯示,還順便做了 tray icon (no taskbar icon),這樣這個debugger就可以在開機時自動載入並乖乖的躲在 tray裏等者使用。

*zinc的限制多

比較有趣的是雖然zinc要包swf很容易,但由於keith的程式碼裏有特別處理onResize這部份,會動態一直重排介面上的controls,因此要特別處理 zinc event --> swf event 這段,不然這些事件會在zinc就被吃掉。

另外也由於做了這個小程式,才順便發現原來 zinc 與 AS2 的整合程度還真是不太高,或者說,呃,挺糟糕的,原本我以為至少應該是比較OO的手法才是,而不是硬性規定將程式碼寫在fla裏的第1格(這是我最痛恨也絕不允許工程師做的事, 因為這樣一來就無法透過subversion做 diff/merg了),不過現階段的需求已達成,剩下的問題就隨緣吧...orz

*結論

btw, 如果你需要這個程式,請先到bit-101的blog下載原版,對keith, tim兩位工程師表達最基本的敬意,如果他們的功能真的不敷使用,再留言或來信索取,大小約為 2mb (ain't my fault, it's zinc doing this)

by admin

留言回應

hidden

您的留言會先經過站長認証後才刊登在網站上。
your comments will be approved by Administrator before appearing on the page.

Trackback this post  |  Subscribe to the comments via RSS Feed

mobile phone