代码之家  ›  专栏  ›  技术社区  ›  Paul Mignard

如何使flash不在舞台上渲染对象?

  •  0
  • Paul Mignard  · 技术社区  · 17 年前

    讨论开始了 over here 但我想最好能有一个明确的答案…

    那么假设你在舞台上有movieclip(或者是一个面向灵活观众的uicomponent),你要怎么做才能不让用户看到这个对象,同时让avm2在为用户呈现舞台时甚至不考虑它?

    我一直认为答案是 visible = false 但有一个论点是,物体必须放在舞台边界之外(比如 x = 2000 这看起来像一个黑客。有人知道真正的答案吗?

    编辑: 我想让flash不渲染该项的必要性将有助于提高性能。

    5 回复  |  直到 17 年前
        1
  •  2
  •   John Pick    17 年前

    黑客程序适用于Flash 8(ActionScript 2)或更低版本。通过升级到actionscript 3和flex 2/3,设置visible属性就足够了。

        2
  •  3
  •   fenomas    17 年前

    正如其他答案所指出的,将剪辑移出舞台的“黑客”不再是必要的。但是,设置 visible = false; 如果性能很重要的话,这是一件明智的事情。作为显示列表的一部分,但设置为不可见的剪辑,如果有足够的剪辑,仍然会产生大量的渲染开销。如果从播放列表中删除它们, removeChild() ,它们不会产生渲染开销(尽管它们仍然占用内存)。

        3
  •  2
  •   mikechambers    17 年前

    是的,正如设计所说,从显示列表中删除它:

    var s:MovieClip = new MovieClip();
    s.lineStyle(1, 0xFFFFFF);
    addChild(s);//shows in moviea 
    removeChild(s);//removes from display list, but you still have a reference to it
    

    我没有测试过,但它应该给你一个大概的想法。

    迈克

        4
  •  1
  •   hasseg    17 年前

    如果您使用的是flex及其容器布局系统, includeInLayout 中的属性 UIComponent 当您不想显示某些内容时,类也很有用:它指定在测量布局时是否将组件考虑在内。

        5
  •  1
  •   restlessdesign    17 年前

    完全从显示列表中删除(removechild()、removechildat()等)。只要您没有将movieclip的引用实际设置为“空”,它仍将保留在内存中,当您再次需要时可以重新添加到显示列表中(addchild()、atchildat()等)。

    推荐文章