【问题标题】:flex 3 play effect removedFromStageflex 3 播放效果已移除FromStage
【发布时间】:2010-11-25 21:16:34
【问题描述】:

我正在使用 removeChildAt() 从 WindowedApplication 中删除一个组件,并且想要播放一个效果(在组件内定义,例如 mx:Resize),它可以将组件(一个 hbox)的高度在它之前降低到 0已移除。

我在组件中使用了 removedFromStage 事件,但它只是消失了(没有播放效果)。我猜它在效果播放之前就被移除了。有没有办法在removeChild函数完成之前播放效果,最好在组件中定义?

谢谢。

【问题讨论】:

    标签: actionscript flex3 mxml components


    【解决方案1】:

    removedFromStage 将在组件被移除后触发(适用于清理/内存管理)。大多数 Flex 组件都有 removedEffect 属性。这就是你想要使用的。

    【讨论】:

    • 这正是我想要的。我已经尝试在组件根节点和“setStyle”中使用它,但在这两种情况下,组件都会快速调整大小然后返回到它的原始高度(并且不会被删除)。我的调整大小非常基本,看起来像: 有什么想法吗?谢谢。
    【解决方案2】:

    我将效果移至父级:

    var contentBox:VBox = new VBox();
    var cm:HBox = new Hbox();
    cm.setStyle('removedEffect', CloseDown);
    contentBox.addChildAt(cm, 0);
    //in another function
    contentBox.removeChild(0);
    

    这行得通。当我在组件本身中产生效果时,这不起作用,唉。

    【讨论】:

      【解决方案3】:

      请查阅 Flex Builder 下的 mx.effects.Resize 类帮助页面,并查看事件列表。

      基本上你需要对你的代码做的是:

      1. 创建调整大小事件。

      2. 为效果结束添加事件监听器

      3. 播放效果

      4. 效果结束后关闭窗口。

      代码应如下所示:

      public function close():void
      {
          var resize:Resize   = new Resize();
          resize.heightTo     = 0;
          resize.duration     = 500;
          resize.addEventListener(EffectEvent.EFFECT_END, onCloseEffectEndHandler);
      
          resize.play([this]);    
      
      }
      
      private function onCloseEffectEndHandler(event:EffectEvent):void
      {
          PopUpManager.removePopUp(this);
      }
      

      注意:当您显示窗口时,请不要忘记设置高度,否则它将保持为 0,您将什么也看不到!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-22
        • 1970-01-01
        相关资源
        最近更新 更多