7

我最近在一些 Flash 编码中遇到了一个令人尴尬的情况,我不得不不小心向客户端发送了一个构建,其中并非所有调试标志和变量都未设置。(它正在向调试而不是发布服务器等发送请求......)

部分原因是我糟糕的代码组织;我已经解决了。

但是,Flash 似乎不允许设置不同的构建配置,并且 Actionscript Compile 设置托管了各种开关,这些开关以一种忘记选中/取消选中某些内容的方式排列(天哪,我忘了禁用调试器支持!)可能就像发生在我身上一样。无论如何,我发现在我的发布配置和调试配置之间手动跳转很容易搞砸。

那么,其他开发人员,您使用什么技术在您的测试配置和您发布给您的老板/客户/任何人的构建配置之间进行防错跳转?

我知道我可能应该放慢速度,但我更喜欢设置一些我可以拨动开关的地方。经过长时间的中断(Flash MX + 2004 年),我才重新回到 Flash。

哦,我知道禁用调试支持和设置导入密码以及所有这些都是徒劳的,我的目标是简单地将脚本小子排除在我的项目之外。反编译器胜过这一切......

无论如何,谢谢!

4

4 回答 4

9

如果您使用的是 Flash CS4,则可以使用配置常量。您可以在发布设置|ActionScript3.0 设置...|配置常量下找到它们

如果您添加了 DEBUG::PLAYER 那么您可以使用如下代码:

config namespace DEBUG;

//... code here ...

DEBUG::PLAYER
{
    trace("Player state here");
}

现在您可以在真假之间切换常量。

于 2009-03-28T16:28:28.913 回答
5

我使用环境类,如下所示:

public class MyEnvironment {
  public static const DEBUG:Boolean = true;
  public static const SERVER:String = 'localhost';
  // More here
}

将此导入到您的主 ActionScript 类中,并确保您的所有辅助函数都引用它。例如,您的调试器函数应该仅在MyEnvironment.DEBUG为 true 时运行,并且您的网络函数应该将请求发送到MyEnvironment.SERVER.

在我的设置中,我会将其保存为MyEnvironment.as. (显然,类名在现实生活中会有所不同。)我还将副本另存为MyEnvironment.as-debugand MyEnvironment.as-release; 后者会有不同的设置。然后,如果我需要发布版本,我的构建脚本将复制MyEnvironment.as-releaseMyEnvironment.as(覆盖原始版本)并重新编译。这会将我的所有发布设置加载到我的主要 ActionScript 类中;如果我为调试构建运行脚本,则相反。

于 2009-03-28T01:00:23.963 回答
3

一个好主意是在调试模式下使用视觉提示。设置 DEBUG 标志后,在屏幕的一个角落显示一个带有“调试模式”和版本号或类似内容的 TextField。

当您在将其发送给客户端之前进行最终测试时,您会发现您忘记禁用调试模式。

这当然取决于您如何构建项目。如另一个答案中所述,最好将标志存储在可通过整个应用程序访问的高级“全局”类中。

于 2009-03-28T08:44:12.507 回答
0

我使用了一个名为“TestingEnvironment”的 flashvar。在应用程序启动时,我检查 loaderInfo.parameters 以查看它是否设置为“true”(字符串文字,而不是布尔值),如果是,我将全局 Environment 类实例上的 public static var debugMode 设置为 true。然后我所有的班级都可以看到我们处于测试环境中,并会采取相应的行动。

此外,由于我使用不同的页面代码来嵌入测试和生产,我希望 flashvar 永远不会在生产页面嵌入中结束。如果是这样,它很容易关闭,无需重新编译。

于 2009-09-06T08:00:13.067 回答