gpt4 book ai didi

flash - 确定swf是否在 "debug"播放器或模式下

转载 作者:行者123 更新时间:2023-12-04 05:11:20 25 4
gpt4 key购买 nike

是否可以使用Flash(CS3 + AS3)确定发布的SWF是在调试播放器中运行还是在Flash的 Debug模式下运行?

我知道Flex提供了设置不同构建目标(发布/调试)的能力,并且您可以在编译时将类似CONFIG::debug的代码包含在#ifdef样式中。

我正在想象类似System.isDebug()的东西,但找不到任何东西。我想使用它,因为我的应用程序中有调试功能,我绝对不希望在生产环境中使用它。

最佳答案

看看这个类http://blog.another-d-mention.ro/programming/how-to-identify-at-runtime-if-swf-is-in-debug-or-release-mode-build/

此类提供了两个相关的(和不同的)信息:

  • SWF是否使用-debug开关构建(已编译调试符号)?
  • Flash播放器是否是调试播放器(具有显示错误等的功能)?

  • Capabilities.isDebugger仅回答第二个问题-用户正在运行Flash Debug Player。在您的情况下,要在调试版本中控制应用程序的各个部分,您需要-debug版本检查(然后不要将-debug版本交付到生产环境中)。

    但是请注意,这两个检查都是运行时检查。在调试代码周围使用条件编译(aka CONFIG::debug)仍然是一个好主意,因为它将确保最终的SWF中不会传递可能敏感的调试代码,从而使其尽可能小且安全。

    我在这里重现引用的代码,以防博客链接断开:
    package org.adm.runtime
    {
    import flash.system.Capabilities;

    public class ModeCheck
    {
    /**
    * Returns true if the user is running the app on a Debug Flash Player.
    * Uses the Capabilities class
    **/
    public static function isDebugPlayer() : Boolean
    {
    return Capabilities.isDebugger;
    }

    /**
    * Returns true if the swf is built in debug mode
    **/
    public static function isDebugBuild() : Boolean
    {
    var stackTrace:String = new Error().getStackTrace();
    return (stackTrace && stackTrace.search(/:[0-9]+]$/m) > -1);
    }

    /**
    * Returns true if the swf is built in release mode
    **/
    public static function isReleaseBuild() : Boolean
    {
    return !isDebugBuild();
    }
    }
    }

    关于flash - 确定swf是否在 "debug"播放器或模式下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/185477/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com