Flash CS5操作指南(76)ActionScript 1.0 和 2.0 的除错
- 2021-11-23
- 来源/作者: 本站原创 / 佚名
- 1 次浏览
ActionScript 1.0 和 2.0 的除错
对 ActionScript 1.0 和 2.0 的 Script 进行除错
当 SWF 档案在 Flash Player 中执行时,ActionScript 2.0 除错程序可协助您寻找 ActionScript 1.0 和 2.0 错误。使用 Flash 对 ActionScript 1.0 和 2.0 进行除错时,您会在 Flash Player 除错程序版本中检视 SWF 档案,这个版本会随 Flash 自动安装。若要安装独立的 Flash Player 除错程序版本,请在 /Flash 安装目录/Players/Debug/ 目录中执行安装程序。
「ActionScript 2.0 除错程序」会以阶层方式显示目前加载 Flash Player 中的影片片段清单。使用「ActionScript 2.0 除错程序」,您便可以在 SWF 档案播放时显示及修改变量及属性值,也可以使用断点停止 SWF 档案,并依行逐步执行ActionScript 程序代码。然后您可以再次回到 Script 中进行编辑,以便产生正确的结果。
C
A
D
B
上次更新
ActionScript
您可以调整「除错程序」面板区域的大小。当指针在每个区域之间发生变化时,将其拖曳以调整「显示」列表、「监控」清单和程序代码检视的大小。同时也可以单击垂直拆分栏,将「除错程序」的任一边展开到最大。
在启动「除错程序」后,其状态栏会显示档案的 URL 或本机路径,说明该档案是在测试环境中还是由远程位置执行,并显示影片片段显示列表的实时检视。在档案中新增或移除影片片段时,显示列表会立即反映变更。
备注:ActionScript 2.0 与 3.0 除错程序有很大的差别。如需关于 ActionScript 3.0 除错程序的详细信息,请参阅第321 页「ActionScript 3.0 的除错」。
测试影片命令和键盘控件当您使用「控制> 测试影片> 测试」命令,对实作键盘控件 (Tab 键定位、使用Key.addListener() 建立的键盘快捷方式等) 的SWF 档进行测试时,请在「测试影片」窗口中选取「控制> 停用键盘快捷方式」。选取这个选项可防止编写环境「撷取」按键动作,并让按键动作传递到播放程序。例如,在编写环境中,Control+U 会开启「偏好设定」对话框。如果 Script 将Control+U 指定给为屏幕文字加上底线的动作,则当您使用「测试影片」时,按 Control+U 便会开启「偏好设定」对话框,而非执行为文字加上底线的动作。若要将 Control + U 命令传递至播放程序,您必须在「测试影片」窗口中选取「控制 > 停用键盘快捷方式」。
重要事项:在英文系统上使用非英文的应用程序时,如果 SWF 档案路径的任何部分包含了无法以 MBCS 编码配置代表的字符,「测试影片」命令就会失败。例如,日文路径在英文系统上无效。
其它除错工具Flash 还提供下列除错工具:
• 「编译程序错误」面板,会显示 Flash 编译 Script 时所遇到的错误
• 「输出」面板,会显示运行时错误讯息以及变量和对象的列表
• trace() 语句,会将程序设计备注和表达式值传送到「输出」面板
• throw 和try..catch..finally 语句,可让您测试并响应 Script 内的运行时错误
对本机 SWF 档案进行除错
1 开启 FLA 文件。2 选取「除错> 影片除错> 除错」。这个命令会将 SWF 档案连同除错信息 (SWD 档案) 一起汇出。它会开启「除错程序」,并在测试环境中开启 SWF 档案。
SWD 档案是用来对 ActionScript 进行除错,档案中包含了可让您使用断点并逐步执行程序代码的信息。
针对远程 ActionScript 2.0 SWF 档进行除错
您可以使用 Flash Player 除错程序版本的单独、ActiveX 或插件版本,对远程 SWF 档进行除错,这个版本位于 Flash 安装目录/Players/Debug/ 目录。
若要允许对远程档案进行除错,启用「发布设定」中的除错功能。您还可以将档案连同除错密码一起发布,以确保只有受信任的使用者才能对它进行除错。
和在 JavaScript 或 HTML 中一样,使用者也可以在 ActionScript 中检视客户端变量。为了要安全地储存变量,请将变量传送到服务器端应用程序,而非将其储存在档案中。不过,身为开发人员,您可能有其它不想要公开的商业秘密 ( 如影片片段结构),就可以使用除错密码来保护您的工作。
启用 SWF 档案的远程除错,并设定除错密码
1 储存 FLA 档案。
2 选取「档案 > 发布设定」。
上次更新
ActionScript
3 在「发布设定」对话框的「Flash」卷标上,选取「允许除错」。4 若要设定密码,可以在「密码」方块中输入密码。一旦设定密码后,没有密码的用户无法将信息下载到「除错程序」。5 关闭「发布设定」对话框,然后选取下列其中一个命令:
•「除错> 影片除错> 除错」
•「档案 > 汇出 > 汇出影片」
•「档案 > 发布」
Flash 会建立一个扩展名为 .swd 的除错档案,并将它与 SWF 档案一起储存在同一个目录中。SWD 档案是用来对ActionScript 进行除错,档案中包含了可让您使用断点并逐步执行程序代码的信息。6 将 SWF 档与 SWD 档同时上传到网站服务器的相同目录中,或是保留在本机,以执行 localhost 的远程除错会话。如果 SWD 文件的所在目录与 SWF 文件不同,您还是可以进行远程除错,但是「除错程序」没有断点信息,所以无法逐步执行
程序代码。7 在 Flash 中,选取「除错 > 开始远程除错会话 > ActionScript 2.0」。Flash 会开启「ActionScript 2.0 除错程序」面板并等候 Flash Player 除错程序进行连接。这时候您有两分钟的时间可以启动
Flash Player 除错程序。如果超过两分钟,请重复此步骤。8 在 Flash Player 插件、ActiveX 控件,或是独立播放程序的除错程序版本中开启 SWF 文件。除错程序的独立播放程序位于 Flash 安装目录/Players/Debug/ 目录中。当除错播放程序连接到 Flash ActionScript 2.0 的「除错程序」面板时,就会开始除错会话。
从远程位置启动除错程序
1 如果 Flash 编写应用程序尚未开启,请现在开启它。2 选取「除错 > 开始远程除错会话 > ActionScript 2.0」。3 在浏览器或单独的 Flash Player 除错程序版本中,从远程位置开启已发布的 SWF
当 SWF 档案播放时并不会自动更新此清单,因此每当您要将信息传送到「输出」面板时,都必须选取「列出变量」命令。
1建立新的 FLA 文件。例如,您可将它命名为listvariables.fla。
2在「动作」面板中加入下列 ActionScript 2.0:
_global.myName = "Buster";
var myCatSays:String = "meow";
var myNum:Number = 313;
var myArray:Array = ["one", "two", "three"];
3选取「控制> 测试影片> 测试」。
4 在测试环境中,选取「除错 > 列出变量」。「输出」面板中会显示目前在 SWF 档案中的所有变量列表。下列范例显示从上面步骤 2 所列的程序代码中输出的变数:
Global Variables:
Variable _global.myName = "Buster"
Level #0:
Variable _level0.$version = "WIN 9,0,29,3"
Variable _level0.myCatSays = "meow"
Variable _level0.myNum = 313
Variable _level0.myArray = [object #1, class 'Array'] [0:"one",
1:"two",
2:"three"
]
设定和移除断点
断点可以让您将应用程序停在 ActionScript 的特定程序代码行。您可以使用断点,测试程序代码中可能发生问题的部分。例如,假设您撰写了一组if..else if 语句,但无法判断哪一个条件正在执行,那么您可以在语句前面加上断点,并在「除错程序」中逐一检查条件 ( 或逐步执行条件)。
您可以在「动作」面板、Script 窗口或「除错程序」中设定断点。在「动作」面板中设定的断点会和 FLA 档案一起储存。在「除错程序」和 Script 窗口中设定的断点并不会储存在 FLA 档案中,而且只有在目前的除错会话中才有效。
重要事项:如果在「动作」面板或 Script 窗口中设定断点,并单击「自动格式化」,则会检查断点。如果「自动格式化」命令移除了空白行,则可能会将 ActionScript 移至另一行。在设定断点之前先自动格式化 Script 是个不错的作法。
在「除错程序」或 Script 窗口中设定断点,便能在这两个窗口当中检视断点,不过前提是这两个窗口中的 AS 档案路径必须相同。
请不要在批注行或空白行上设定断点,因为会忽略这一类的断点。
在动作面板或 Script 窗口中设定或移除断点
在除错会话期间,执行下列其中一项:
•单击「Script」窗格的左边界。红点代表断点。
• 单击「除错选项」按钮。
•单击右键 (Windows) 或 Control + 单击 (Macintosh) 以显示快显选单,然后选取「设定断点」、「移除断点」或「移除这个档案中的断点」 ( 在 Script 窗口中,也可以选取「移除所有 AS 档案中的断点」)。
•按 Control+Shift+B (Windows) 或 Command+Shift+B (Macintosh)。
备注:在某些旧版的 Flash 中,单击「Script」窗格的左边界只会选取程序代码行,但现在则会增加或移除断点。若要选取程序代码行,可以使用 Control + 单击 (Windows) 或 Command + 单击 (Macintosh)。
上次更新
ActionScript
在除错程序中设定和移除断点
• 单击程序代码窗格的左边界。红点代表断点。
• 在程序代码检视的上方,单击「切换断点」或「移除全部断点」。
•单击右键 (Windows) 或 Control + 单击 (Macintosh) 以显示快显选单,然后选取「设定断点」、「移除断点」或「移除目前档案中的全部断点」。
•按 Control+Shift+B (Windows) 或 Command+Shift+B (Macintosh)。
断点 XML 档案
在 Script 窗口中处理断点时,AsBreakpoints.xml 档案可让您储存断点信息。这个档案会写入下列位置的 Local Settings 目录:
Windows 硬盘\Documents and Settings\ 用户\Local Settings\Application Data\Adobe\Flash CS3\ 语言\Configuration\Debugger\
Macintosh Macintosh 硬盘/Users/ 用户/Library/Application Support/Adobe Flash CS3/Configuration/Debugger/
以下为 AsBreakpoints.xml 档案的范例:
<?xml version="1.0"?> <flash_breakpoints version="1.0">
<file name="c:\tmp\myscript.as">
<breakpoint line="10"></breakpoint>
<breakpoint line="8"></breakpoint>
<breakpoint line="6"></breakpoint>
</file>
<file name="c:\tmp\myotherscript.as">
<breakpoint line="11"></breakpoint>
<breakpoint line="7"></breakpoint>
<breakpoint line="4"></breakpoint>
</file> </flash_breakpoints>
XML 档案是由下列标签所组成:flash_breakpoints 这个节点有version 特质,这个特质会指定 XML 档案的版本,而 Flash 8 是 1.0 版。
file 为flash_breakpoints 的子节点。这个节点有name 特质,这个特质会指定含有断点的文件名。
breakpoint 为file 的子节点。这个节点有line 特质,这个特质会指定含有断点的行号。
当启动 Flash 时会读取 AsBreakpoints.xml 档案,而在离开时则会重新产生新的版本。AsBreakpoints.xml 是用来追踪介于开发会话之间的断点。
逐步执行程序代码行
设定 Script 中的断点,然后在「除错程序」中单击「继续」之后,您便可以逐步执行程序代码行,也就是控制「除错程序」在语句和函数内的移动方式。
例如,在下列的 ActionScript 2.0 程序代码中,假设断点是设定在myFunction() 程序行上的按钮内:
on(press){ myFunction(); }
当您单击该按钮时,Flash Player 便会到达断点并暂停下来。您现在可将「除错程序」带到文件中定义的myFunction() 第一行。同时也可继续逐步执行或离开函数。
上次更新
ActionScript
当您逐步执行程序代码行时,「变量」、「局部变量」、「属性」和「监控」卷标中的变量值和属性值会跟着变更。「除错程序」的程序代码检视左边的黄色箭头会指出「除错程序」停下的程序代码行。请使用下列位于程序代码检视上方的按钮来操作:
跳入
让「除错程序」进入函数。( 如果某一行没有包含用户定义的函数,「跳入」便会跳到下一行)。
在下列范例中,如果将断点放在第 7 行,然后单击「跳入」,「除错程序」便会跳到第 2 行,而再单击「跳入」便会跳到第 3 行。
1 function myFunction() {
2 x = 0;
3 y = 0;
4 }
5
6 mover = 1;
7 myFunction();
8 mover = 0;
备注:这个代码段中的编号代表行号,并不属于程序代码的一部分。
跳出
让「除错程序」离开函数。如果目前停在用户定义的函数,这个按钮才有作用;它会将黄色箭头移至函数呼叫后
面的那一行。在上一个范例中,如果将断点放在第 3 行,然后单击「跳出」,「除错程序」便会移至第 8 行。在某一行 ( 不在用户定义的函数内) 单击「跳出」,与单击「继续」的作用一样。例如,假设您停在第 6 行,然后单击「跳出」,则播放程序会继续执行 Script,直到遇到断点为止。
略过
让「除错程序」不进入程序行。这个按钮会将黄色箭头移至 Script 中的下一行。在上一个范例中,如果停在第 7 行,然后单击「略过」,虽然仍会执行myFunction() 程序代码,但会直接进入到第 8 行,而不会逐步执行myFunction()。
继续
将程序代码停留在播放程序停止处并继续播放,直至到达断点为止。
结束除错会话
停用「除错程序」,但继续在 Flash Player 中播放 SWF