Flash 使用闪存和x2B发布/调试配置;AS3

Flash 使用闪存和x2B发布/调试配置;AS3,flash,actionscript-3,debugging,release,Flash,Actionscript 3,Debugging,Release,我最近遇到了一个尴尬的情况,在一些Flash编码中,我不得不意外地向客户端发送一个构建,其中并不是所有调试标志和变量都未设置。(它向调试服务器而不是发布服务器发送请求,等等) 部分原因是我糟糕的代码组织;我已经决定了 然而,Flash似乎不允许设置不同的构建配置,Actionscript编译设置承载了各种各样的开关,它们的排列方式使得忘记选中/取消选中某些东西(OMG,我忘记禁用调试器支持!)可能会发生,就像我一样。在任何情况下,我发现手动在我的发布配置和调试配置之间切换很容易出错 那么,其他开

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

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

然而,Flash似乎不允许设置不同的构建配置,Actionscript编译设置承载了各种各样的开关,它们的排列方式使得忘记选中/取消选中某些东西(OMG,我忘记禁用调试器支持!)可能会发生,就像我一样。在任何情况下,我发现手动在我的发布配置和调试配置之间切换很容易出错

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

我知道我可能应该放慢速度,但我更喜欢设置一些东西,这样我就可以打开开关了。在经历了一段长时间的间歇之后,我又回到了Flash中(Flash MX+2004年的一点)

哦,我知道禁用调试支持和设置导入密码是徒劳的,我的目标就是让脚本小子们远离我的项目。反编译器胜过一切,所以


无论如何,谢谢

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

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

//... code here ...

DEBUG::PLAYER
{
    trace("Player state here");
}
将其导入到主ActionScript类中,并确保所有助手函数都引用它。例如,仅当
MyEnvironment.DEBUG
为true时,调试器函数才应运行,并且网络函数应向
MyEnvironment.SERVER
发送请求


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

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

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


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

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

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

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

//... code here ...

DEBUG::PLAYER
{
    trace("Player state here");
}
现在您可以在true和false之间切换常量。

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


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

好的。那么,是否可以在代码中控制ActionScript 3发布设置?谢谢你的回复!令人惊叹的!不过,这类功能在CS3中似乎不可用,对吗?是的,我很确定这是CS4中的一个新功能。但我不是100%肯定。