我最近开始使用 Flash Builder 在 Flash 中进行编程。来自 JavaScript,我习惯了“交互式”控制台(Chrome 的默认控制台)——所谓交互式,我的意思是我可以例如单击一个对象来显示它的属性,并在运行时执行代码。它还显示了“trace()”语句来自哪个文件和哪一行。
这在闪存中可能吗?到目前为止,我已经尝试过“FlashFireBug”和“Vizzy”,但没有运气。
我最近开始使用 Flash Builder 在 Flash 中进行编程。来自 JavaScript,我习惯了“交互式”控制台(Chrome 的默认控制台)——所谓交互式,我的意思是我可以例如单击一个对象来显示它的属性,并在运行时执行代码。它还显示了“trace()”语句来自哪个文件和哪一行。
这在闪存中可能吗?到目前为止,我已经尝试过“FlashFireBug”和“Vizzy”,但没有运气。
在某种程度上,你可以做到这一点。Flash Builder 基于 Eclipse,因此默认安装了广泛的调试框架。要执行任何操作,您首先需要插入一个断点(双击一行左侧的灰色条,或右键单击>添加断点)。与开发控制台中的 JS 一样,这将在该精确行停止代码执行,并允许您单步执行、跳过等。此外,它还允许您访问“表达式”和“变量”窗格。
“变量”窗格使您可以访问断点处行范围内的所有对象。有了这个,您可以查看每个对象的每个属性。您还可以将这些属性更改为不同的值。然而,这并不像使用 JS 控制台那样好用,因为 AS3 的类型非常严格。您可以更改的内容是有限的,这只是原始数据类型:数字、字符串、数组、对象。除此之外,我不相信你可以改变价值观。
“表达式”窗格使您能够调用属性或运行表达式并获得值的完整读数(因此您不必挖掘对象,只需调用它即可)。这又是有限的。您在此窗格中执行的操作实际上不会改变任何内容。您可以运行一个函数,它会返回值,但不会修改程序中的任何内容。
您可以在控制台本身中输入,但它不会执行任何操作。
据我所知,没有办法获得跟踪位置。我通常会做任何会长时间保留的跟踪,如下所示:
trace( "[ClassName] trace output" );
这样我至少知道它来自哪个班级。如果您创建自己的跟踪函数(很可能使用静态方法),您也可以自动化该位。除此之外,我认为你不能做更多。
JS 和 AS3 的主要区别在于 AS3 是一种编译语言。许多代码实际上是在编译时运行和计算的,因此在运行时要做的事情更少。JS 在调用时运行所有内容,这就是为什么您可以在开发工具中修改代码并调用它,并且该更改将执行。据我所知,不幸的是,由于此限制,您所寻求的内容在 AS3 中根本不可能。