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