将效果添加到flex自定义组件

时间:2009-09-19 09:38:38

标签: flex actionscript-3 effects

我有一个flex应用程序,我想在运行时添加一个带有动作脚本的新自定义组件。 这很好用。我创建了自定义组件并添加了以下代码:

var freeView:FreeView=new FreeView();
freeView.setStyle("showEffect",this.fadeIn);
freeView.setStyle("hideEffect",this.fadeOut);
freeView.visible=false;
this.addChild(freeView);
freeView.visible=true;

但我的问题是淡入效果不起作用。我知道我已正确宣布效果,因为如果我在另一个组件(如面板)中使用它,它可以正常工作。 有人可以帮我解决这个问题吗? 最好的问候!

3 个答案:

答案 0 :(得分:0)

确保在FreeView子类中调用任何重写的Flex超级函数。

特别是updateDisplayList和commitProperties:

override protected function updateDisplayList(w:Number, h:Number)
{
    super.updateDisplayList(w, h);

    // Your code here.
}


override protected function commitProperties()
{
    super.commitProperties();

    // Your code here.
}

您是否重写了其中一个高级容器类(例如Canvas或HBox)或UIComponent?

答案 1 :(得分:0)

最后,我以不同的方式解决问题。 而是在运行时添加组件,我已将组件添加到应用程序,并将visible属性设置为false,并在需要时将其更改为true。

答案 2 :(得分:0)

你可以通过将效果目标设置为新元素

来反过来做到这一点
<mx:Fade id="showFlag" alphaFrom="0" alphaTo="1" duration="5000"/>

var flag:Image = new Image;
flag.source = flagSource;

something.addElement(flag);

showFlag.target = flag;
showFlag.play();