【问题标题】:Release/Debug Configurations with Flash + AS3使用 Flash + AS3 发布/调试配置
【发布时间】:2010-10-16 01:35:35
【问题描述】:

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

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

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

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

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

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

无论如何,谢谢!

【问题讨论】:

    标签: flash actionscript-3 debugging release


    【解决方案1】:

    我使用一个环境类,像这样:

    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 类中;如果我为调试构建运行脚本,则相反。

    【讨论】:

    • 好的。那么是否可以在代码中控制 ActionScript 3 发布设置?感谢您的回复!
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

      config namespace DEBUG;
      
      //... code here ...
      
      DEBUG::PLAYER
      {
          trace("Player state here");
      }
      

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

      【讨论】:

      • 太棒了!不过,看起来这种东西在 CS3 中是不可用的,对吧?
      • 是的,我很确定这是 CS4 中的一个新功能。但我不是 100% 确定。
      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-27
        • 2015-10-12
        • 1970-01-01
        • 2015-12-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-10
        相关资源
        最近更新 更多