当前位置:  开发笔记 > 程序员 > 正文

确定swf是否处于"调试"播放器或模式

如何解决《确定swf是否处于"调试"播放器或模式》经验,为你挑选了1个好方法。

有没有办法使用Flash(CS3 + AS3)来确定发布的swf是在调试播放器中还是在Flash的调试模式下运行?

我知道,Flex提供的能力设置不同的构建目标(发布/调试),并可以使用类似CONFIG::debug#ifdef风格入选的代码在编译时.

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



1> TheBrain..:

查看本课程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构建检查(然后不要将-debug构建交付到生产中).

但请注意,这两项检查都是运行时检查.在调试代码周围使用条件编译(也称为CON​​FIG :: 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();
    }
  }
}

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有