2009-07-29 6 views
1

J'ai un composant ActionScript personnalisé que j'utilise dans une application Flex (Flex 3.3, ActionScript 3). Ce composant contient un contrôle Image dont la visibilité est définie dynamiquement en fonction d'une propriété de l'élément data fourni au composant.Comment rendre un composant avec une visibilité dynamique dans ActionScript?

Le problème est que même lorsque je définis l'image pour qu'elle soit visible, elle ne s'affiche pas à l'écran. Y a-t-il quelque chose de spécifique que je dois faire pour que l'image soit rendue? Extraits de code approprié ci-dessous:

override public function set data(value:Object):void 
{ 
    _data = value; 

    if(_data) { 

     if(_myImg) { 
      _myImg.source = someImageClass; 
      _myImg.visible = _data.visibilityProperty; 
      _myImg.includeInLayout = _data.visibilityProperty; 
      _myImg.invalidateProperties(); 
      _myImg.invalidateDisplayList(); 
     } 
    } 

    invalidateProperties(); 
    invalidateDisplayList(); 
} 

override protected function createChildren():void 
{ 
    super.createChildren(); 

    if(!_myImg) { 
     _myImg = new Image(); 
     _myImg.height = 16; 
     _myImg.width = 16; 
     addChild(_myImg); 
    } 
} 

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void 
{ 
    super.updateDisplayList(unscaledWidth, unscaledHeight); 

    _myImg.x = calculatedXCoordinate; 
    _myImg.y = calculatedYCoordinate; 
} 

Répondre

1

Il s'avère que le code ci-dessus j'ai posté , en fait, fonctionne correctement. J'ai découvert qu'en raison d'un bug copier-coller que j'aurais dû attraper, je n'ajoutais pas l'image à la liste d'affichage, d'où la raison pour laquelle elle n'apparaissait jamais.

2

Avez-vous ajouté le composant à la liste d'affichage? Il semble que vous ayez ajouté l'image à la liste d'affichage du composant, mais que vous n'avez éventuellement rien fait avec le composant lui-même.

+0

Oui, le composant est en fait utilisé comme rendu d'élément drop-in, il est donc utilisé ailleurs dans mon application. Je devrais également mentionner qu'il y a d'autres composants toujours visibles dans mon moteur de rendu, et ils affichent très bien. – Dan

Questions connexes