使用禁止访问舞台的系统时,Flash组合框出现错误

我正在为一个平台开发SWF,该平台阻止代码访问安全沙箱原因的舞台(并且也接受仅为Flash Player 9构建的SWF)。

我正在尝试添加默认的Flash组件框。 在查看这个组件的类代码时,我发现Adobe编码器已经在内部设置了try和catch块,用于实现这些阶段访问方案,事实上,当我测试这个组件时,我没有收到任何错误。

这些组件显示错误。 在舞台阻挡平台上播放时,它们看起来像这样(显示两个组合框关闭,一个提示):

当他们应该看起来像这样,并且在本地测试时确实看起来像这样:

让我澄清一下,他们按预期工作,只是不断地在组合框顶部显示这个白色文本输入框。 这肯定与阶段访问和焦点问题有关(看起来组件始终是焦点)。

我想改变这个组件代码,使它们看起来是正确的。 有任何想法吗?


我找到了同样的问题。 我的组合框位于AIR应用程序加载的外部SWF中,显示与您的屏幕抓图完全相同。 虽然我还没有弄清楚为什么发生这种情况,但我已经开发了这种解决方法:

  function normalizedComponentTf(component:Sprite):void {
    for (var i:int = 0; i < component.numChildren; i++) {
        component.getChildAt(i).alpha = 0;
        if( component.getChildAt(i) is TextField )
        {
            component.getChildAt(i).alpha = 1;
        }
    }
}

然后通过像这样传入Combobox组件的textField属性来简单地调用这个函数:

normalizedComponentTf( comboBoxInstance.textField ); // 

如果您无法访问包含Combobox的子SWF中的代码,那么在父级MovieClip中,按照此处所述的过程遍历子SWF的子项:AS3 - 将项添加到加载的swf中的组合框

希望这可以帮助。

链接地址: http://www.djcxy.com/p/17737.html

上一篇: Flash combobox appearance bug when using a system that blocks access to stage

下一篇: Loading swf into another swf