使用Flash + AS3发布/调试配置

时间:2009-03-28 00:10:14

标签: flash actionscript-3 debugging release

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

部分原因是我的代码组织不佳;我已经解决了这个问题。

然而,Flash似乎不允许设置不同的构建配置,并且Actionscript Compile设置托管各种交换机,这种交换机以忘记检查/取消检查某些内容的方式排列(OMG,我忘了禁用调试器支持!)可能就像我一样。在任何情况下,我发现在我的发布配置和调试配置之间手动跳转很容易搞砸。

那么,其他开发人员,您使用什么技术来防止测试配置之间的错误跳转,以及您向老板/客户/谁发出的构建配置?

我知道我应该放慢速度,但我更喜欢把东西放到我可以翻转开关的地方。经过长时间的中断后我才重新回到Flash中(Flash MX + 2004年的一点点)。

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

无论如何,谢谢!

4 个答案:

答案 0 :(得分:9)

如果您使用的是Flash CS4,则可以使用配置常量。 您可以在“发布设置”|“ActionScript3.0设置...”|“配置常量”

下找到它们

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

config namespace DEBUG;

//... code here ...

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

现在你可以在true和false之间切换常量。

答案 1 :(得分:5)

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

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

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

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

答案 2 :(得分:3)

一个好主意是在调试模式下使用视觉提示。设置DEBUG标志后,在屏幕的一个角上显示一个带有“调试模式”的TextField,可能还有版本号等等。

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

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

答案 3 :(得分:0)

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

此外,由于我使用不同的页面代码嵌入测试和制作,我希望flashvar永远不会在生成页面嵌入中结束。如果确实如此,关闭很简单,不需要重新编译。