【问题标题】:Handling Security Errors in AS3处理 AS3 中的安全错误
【发布时间】:2011-08-10 23:13:23
【问题描述】:

我在 AS3 中使用一个 vimeo 播放器的导入类,它是官方的 vimeo 播放器 api (vimeo.com)。我想处理类实例抛出的任何安全错误(当对象无法加载视频的外部 URL 时,它们会被抛出)。这就是我得到的:

    var clipPlayer = new VimeoPlayer("5d22d3942a54d7c75b931bab4a911857", videoID[clickedClip], fullVideoWidth, fullVideoHeight, "10", 2);
    clipPlayer.addEventListener(SecurityErrorEvent.SECURITY_ERROR , vimeoError);

当然,在后面的代码中,我得到了处理事件的函数:

    function vimeoError (e : SecurityErrorEvent) : void {
        trace("vimeo player failed to load");
    }

这一切看起来都很简单,但错误处理程序并没有触发。我一定在这里遗漏了一些东西......也许你不能在 VimeoPlayer 对象上注册这种事件监听器。但是,我很确定是 VimeoPlayer 对象抛出了它们。这是我得到的一个例子:

Error opening URL 
'http://api.vimeo.com/moogaloop_api.swf?oauth_key=5d22d3942a54d7c75b931bab4a911857&clip_id=21185860&width=500&height=281&fullscreen=0&fp_version=10&api=1&cache_buster=565.7249609939754'
SecurityError: Error #2000: No active security context.

【问题讨论】:

    标签: actionscript-3 api error-handling vimeo


    【解决方案1】:

    调度的错误事件 与抛出的Errors 是分开的。在许多情况下,这两种情况都可能发生,然后您需要监听前者在可能抛出的代码周围使用try 语句捕获后者。您引用的错误似乎是抛出的各种错误(因为事件通常会字符串化为涉及方括号的内容)。

    【讨论】:

    • 如果是抛出的错误会很奇怪。在我看来,它必须是异步的,因为它必须在其类中运行自己的代码来尝试加载 URL,这不会是即时的。如果我错了,请告诉我,因为我不完全理解错误在 AS3 中的工作原理
    • 抛出的错误在以下情况下可能是异步的,相当不愉快:VimeoPlayer 实现可能注册了一个内部事件处理程序,而该处理程序所做的某些事情会导致抛出错误并忽略捕获它.在这种情况下,请注意您可以直接捕获错误。据说(这确实超出了我自己的 AS3 fu 的限制)您可以通过在 LoaderInfo.uncaughtErrorEvents 中注册一个 uncauchtError 处理程序来获得它——但这会给您一切,不容易区分特定 SecurityError 的方法。
    • 嗯.....你刚才描述的最后一种方法可能适用于我的情况,如果我能弄清楚的话。如果我能够区分 SecurityErrors 和那些不是,那么只要发生任何加载错误,我就可以执行一个操作。我会调查的。
    • 尝试了 uncaughtError 策略并得到了我所有的加载错误来触发我需要的东西!这比我之前想要的还要好,因为我不必为每个 urlloader 注册一个安全错误!
    猜你喜欢
    • 2010-11-30
    • 2015-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多