使用禁止访问舞台的系统时,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