2013-09-01

1-8 程式除錯

ActionScript 的程式主要有兩種方式,一種是設定中斷點並使用 Flash 內的影片除錯模式,另外一種是使用 trace 函式。

1-8-1  使用中斷點及除錯模式

請開啟「debug.fla」。設定程式中斷點有兩種方式:第一種如下圖,點選「Debug options」→「Toggle Breakpoint」,在游標所在的程式行上設中斷點;第二種如下下圖,直接在該行前的設定區擊點即可設定。完成中斷點設定者該行會標上紅色的圓點。

使用「Debug options」→「Toggle Breakpoint」,設定或移除中斷點

直接點選該行前的設定區,設定中斷點

設定中斷點之後,點選命令列的「Debug」→「Debug Movie」,或按【Ctrl】+【Shift】+【Enter】以除錯模式測試影片。

點選命令列「Debug」→「Debug Movie」

啟動除錯模式測試影片時,會出現如下圖的除錯模式。在「Variables」面板下,點選物件名稱this,即可展開並查看各變數及子物件的狀況。

除錯模式

下圖為 Debug Console 的功能圖示。綠色三角形為「繼續」圖示,按下後 AS 會開始執行,遇到中斷點後暫停。紅色叉叉為「離開除錯模式」圖示,按下後回到原來的編輯模式。另外三個圖示依序為「下一行」(Step Over)、「下一行進入函式」(Step In)和「下一行離開函式」(Step Out)。通常會使用「下一行」慢慢除錯。

Debug Console的功能圖示

1-8-2  trace

在某些時候中斷點不見得好用,此時可以使用 trace 輸出你想看的變數。trace 是一個函式,使用的方式很簡單只要將變數名傳給它即可。例如,我們開啟 debugTrace1.fla,在其 AS 中加入第18行(下圖),測試影片時,會顯現「Output」視窗,並將輸出的結果顯示出來(下下圖)。

加入「trace(tx, ty)」,多個變數用逗號隔開

Debug_trace1 執行時的輸出視窗

在上圖中,你可以看到一串數值,但是無法得知迴圈的控制變數和顯示數值之間的關係。此時為了標示數值的順序,可以將迴圈控制變數i加入輸出(於 debugTrace2.fla),如下式:

trace(i + ": " + tx + ", " + ty);

上式取代原來的第18行(下圖),能在輸出時標示迴圈控制變數i的值(下下圖)。


取代為「trace(i + ": " + tx + ", " + ty)」

debugTrace2 執行時的輸出視窗
trace 的變化很多,你可以使用如下的式子監看多個變數:

trace("a:"+a, "b:"+b, "obj.c:"+obj.c);

使用中斷點除錯是很好的選擇,然而有些疑難的Bugs,必須使用trace才能有效率地除錯,因此trace的使用必須多加練習。

1-8-3  使用自製的工具

以 trace 查看較複雜的資料物件時,無法直接顯示其資料內容。例如,用 trace 直接輸出 Object 型別的物件,只會看到 [object Object]。為了更方便針對這類的物件除錯,筆者自製了QopDump 類別,只要將光碟中的 QopDump.as 和 FLA 檔放在一起即可使用。

或者使用更理想的做法,將 QopDump.as 放在設定的類別路徑上。點選「Edit」→「Preferences」開啟面板,在面板左側選擇「ActionScript」分類,然後點選「ActionScript 3.0 Settings」,如下圖所示。

點選「ActionScript 3.0 Settings」

在「ActionScript 3.0 Settings」面板內,新增類別路徑「C:\AS_classes」(路徑目錄可以自行決定),如下圖所示。路徑設定好後,將 QopDump.as 複製到「C:\AS_classes\」目錄下,即可使用。

新增類別路徑「C:\AS_classes」

QopDump 是個類別,提供兩個靜態方法,echo 和 go。go 方法是將 Object 屬性以換行和縮排的方式一一列出成有層次的字串,echo 則是將這些文字資料輸出到 Output 面板。debugQopDump.fla 為測試檔,其 Frame Actions 如下圖所示,執行結果如下下圖。

debugQopDump.fla 的 Frame Actions

debugQopDump.fla的執行結果

QopDump.as 本身為一個類別檔,若有興趣其運作方式,請在看完物件導向的內容後,再查看原始碼。


目錄

沒有留言:

FB 留言