本辑接续“Flash MX 2004系列讲座之一”,主题是AS程序的“调试”。
  ActionScript的指令集合就是AS程序,我们知道,在大多数情况下,AS程序并不是集中在一块,而是分布在许多“关键帧”,以及按钮、MC中,其中更有许多“自定义函数”及“子程序”的互相调用,而且,程序往往分布在各个“层次”中或多重时间轴内。
  那么,如果某一个指令的逻辑关系出错,我们就得排查纠错,很多情况下是跟踪某一个变量运行时的动态值,这是个相当有效的方法。
  Flash MX 2004的“调试器”功能得到了加强,它能增加程序“断点”及“监视点”实时跟踪各种变量,动
 
画中的“属性”也一目了然,所有这些,全部随着“时间线”运行而动态呈现!  
  如果你不可能编写较复杂的动画程序,那么,用“调试器”分析别人的编程流程也是不可或缺的!
  在“调试器”中解析、观察动画流程及利用“动作”面板解读、编辑动画程序,是AS语言平台为用户提供的两个重要环境,不深入到这两个环境内部,就永远体会不到Flash MX 2004精彩极伦的另一面。
  下面,我们从“断点”开始:  
  上一辑,我们提到过改进的“动作”面板,设置“断点”特别方便,如右图所示:在程序行的“头部空档”处点击就可完成,再点击一下消除。
  “断点”在程序调试中的用处,下面会碰到......
  如果你用“Ctrl+Enter”键“测试”动画时,再打开“调试”窗口,那么,你将面临一个“死”的调试窗口,而且“调试器”永远不可能被激活!
  进行“调试器”的正确操作应该是:
  先打开“调试器”(在“窗口”菜单的“开发面板”下)快捷键是“Shift+F4”,再选择“调试影片”命令,快捷键是“Ctrl+Shift+Enter”,它在“控制”菜单下。
  不管有没有加“断点”,“调试器”的初始状态是停止的,在此状态下,调试窗口中可以观看“全局属性”或变量。从中可以看到:
flash为每个作品内建了最基本的属性,在“全局属性”项目里,这些属性无值,当点击“level0”时,所有属性全赋予了不同的值,这就是“主场景”中的缺省对象的属性值。
  一个必不可少的步骤是点击“继续”按钮,如右图所示:
  如果未设“断点”,按时间线播放,而设置“断点”时,播放到“断点”再停止。
  “断点”可以设置多个,利用第3个按钮在“断点”间切换。这里还可以随时添加、删除“断点”,要在“断点”处继续播放,可再次点击“继续”按钮。
  在没有设置“断点”的情况下,你可以利用调试器中的“跳转菜单”选择影片中的任意脚本,右窗口上部的“跳过”、“跳入”、“跳出”3个按钮能进行对所有子程序、函数的跟踪或者跳转。
  观看、跟踪动态“变量值”的最佳办法是在某个“变量”项目上设置“监视点”,如上图中,可以在“spc”项目上单击右键,调出快捷菜单,选择“添加监视点”命令,随后可单击“监视点”标签,观看其动态变量值。
  右图是调试器的“项目窗口”及它的属性标签窗口:
  当前情况是“主场景”中的“word”实例的所有属性值,如果这是个MC动画,那么这些属性值会不断地进行变化:

  经过调试后,你可能会觉得奇怪:在你的fla源文件目录下,会多出一个“*.swd”的文件,这是“调试文件”,它保存着“断点”以及使用断点和跟踪代码的信息。
   
  除了“调试器”,你还可以试试一个相当简便的方法,那就是
“trace()”指令。
  该指令的参数可以是变量名、表达式,其结果在“测试影片”时,在“输出”窗口中显示它们的值!
  如右图所示:
  利用这一功能,你可以在适当的程序行中加入trace指令,以了解某变量在运行中的情况。
  在swf中,该指令
将被忽略,不会影响正常播放。
  最后,说一下“远程调试”:
  别认为“调试器”只能在fla文件的编辑环境下使用,把swf文件发布到网络上后,照样能进行“远程调试”。如果你把上述的“SWD”调试文件也放在网络上,同样能显示动画层次、变量、监视点等信息。
  缺省情况下,在网络动画上调出右键菜单时,根本看不到“调试器”菜单项的。
  通过如下设置,可以实现“远程调试”:
  在编辑动画阶段,进行影片调试时,单击“调试窗口”右上角的菜单按钮并点击其中的 “启用远程调试”项目使其有效;
  然后在“发布设置”窗口把“允许调试”复选框选中,顺便还可以输入密码,如右图所示:
   
  右图就是在网络上截取的调试画面:
  在浏览器中的动画上调出右键快捷菜单,我们可以发现多出了一个菜单项“调试器”,单击该菜单项,会出现一个对话框,按缺省确实后就出现了一个远程调试器及进行调试的密码检验窗口,如右图所示:
  我想:如果每个动画作者都能允许访问者察看动画内部的“五脏六腑”,那么,flash
爱好者将新增一个学习环境,因为,它的实时跟踪能力,远比常见的swf“拆解”工具优越!呵呵,至少,我将考虑为么做哦......
 
本辑完,请关注第三辑......