2009-09-19 6 views
0

У меня есть приложение flex, и я хочу добавить новый пользовательский компонент с скриптом действий во время выполнения. Это прекрасно работает. Я создал свой собственный компонент, добавив следующий код:Добавление эффектов в пользовательский компонент 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

Если вы можете предоставить немного больше информации, например, что родительский компонент выглядит. Кроме того, попробуйте использовать кнопку форматирования кода в редакторе, чтобы сделать ваш вопрос более читаемым. – Stiggler

ответ

0

И наконец, я решаю проблему по-другому. Вместо добавления компонента во время выполнения я добавил компонент в приложение с видимым свойством, установленным в false, и я изменил его на true, когда мне нужно.

0

Убедитесь, что вы вызываете любые переопределенные суперфункции Flex в вашем подклассе FreeView.

Особенно 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. 
} 

Вы переопределяете один из классов контейнеров высокого уровня (например, холст или HBox) или UIComponent?

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();