【问题标题】:Set flex application background visibility设置 flex 应用程序背景可见性
【发布时间】:2013-01-31 14:28:22
【问题描述】:

我对 Flex 很陌生,但我正在使用 Away3d 将 Web 应用程序移植到其中。我有点进退两难:

简单来说:

我需要将应用程序背景设置为 visible=false,而不仅仅是 alpha=0,因为它会阻止需要在其后面的项目的鼠标事件。

我真正想做的事:

如果我将 View3D 添加到 Stage,它的索引只与显示列表和事件(鼠标等)相关,它总是会呈现在其他所有内容之后 - 所以我必须在 Application 标签中设置 backgroundAlpha="0" 才能看到它。然而,这给我留下了两个选择,这两个都不是可取的:

在 childIndex(0) 处添加 View3D,绑定到 View3D 的鼠标事件被不可见(但仍然存在)的应用程序后台拦截。但是,在最高索引处添加到舞台会阻止 flex 组件工作,因为它们在技术上位于视图下方,即使它们看起来更高。

我需要我的 View3D 来响应鼠标事件,并且我需要覆盖 Flex 组件。我宁愿不使用隐藏的精灵来拦截/重新调度事件或其他东西,有没有办法简单地设置应用程序背景可见性?

提前致谢

【问题讨论】:

    标签: actionscript-3 flash apache-flex stage3d away3d


    【解决方案1】:

    在黑暗中拍摄,但您是否尝试过在顶级应用程序上设置 alpha="0" 和 mouseChildren="false"?

    <s:Application mouseChildren="false" alpha="0">
        <!-- content goes here -->
    </s:Application>
    

    如果这不起作用,您还可以尝试使用不存在的掩码来屏蔽应用程序。

    快速、未经测试的示例:

    <s:Application mask="{ this.maskShape }">
        <s:Group id="maskShape">
            <!-- Never add anything to this Group -->
        </s:Group>
    </s:Application>
    

    【讨论】:

    • 对不起,伙计,不管怎样,都不管用——mouseChildren 渲染应用程序无用,因为没有检测到鼠标事件,并且掩码没有改变任何东西。我向主应用程序添加了一个 MouseEvent 侦听器以跟踪子名称(ApplicationBackground2 或其他名称),然后尝试在 creationComplete 上手动删除它,但得到一个空指针。奇怪的是它上面没有可见属性但有 alpha。
    • 该对象可能是私有对象。设置backgroundAlpha 实际上是一种正在应用的样式,而不是典型的getter/setter。在 CSS 中应用 backgroundAlpha: 0; 会得到相同的效果。抱歉,我无法提供更多帮助。
    • 是的,我想是的,奇怪的是他们也不会公开该属性 - 将继续试验,无论如何都欢呼
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 2011-03-31
    • 2012-09-17
    • 1970-01-01
    • 1970-01-01
    • 2012-04-20
    相关资源
    最近更新 更多