Comment créer un composant MXML personnalisé dans flex qui est basé sur un composant existant mais dessine une superposition sur ce composant existant dans certaines situations.Dessiner une superposition dans un composant flex personnalisé
Idéalement, le nouveau composant doit être basé sur (dériver de) le composant sortant afin que les occurrences du composant existant puissent être simplement permutées avec le nouveau.
J'ai essayé de surcharger updateDisplayList() dans le nouveau composant et de peindre la superposition en utilisant this.graphics. Cela a entraîné la superposition sous les enfants du composant existant. J'ai également essayé de faire le dessin en recevant un rendu-événement qui a conduit à des résultats similaires.
Lorsque la condition externe qui doit déclencher l'affichage de l'overlay change, j'appelle invalidateDisplayList() sur mon nouveau composant. Cela fonctionne pour déclencher le dessin pour les deux cas décrits ci-dessus. Le problème restant semble être de savoir comment dessiner au-dessus de tous les autres composants une fois qu'ils sont ajoutés.
L'exemple suivant devrait illustrer ce que j'ai essayé de faire; quand overlayEnabled a été fixé et a été appelé du composant méthode invalidateDisplayList(), le rectangle rouge peint se serait en arrière-plan ....
// NewComponent.mxml
<ExistingComponent ...>
<mx:Script>
...
public var overlayEnabled:Boolean;
override protected updateDisplayList(...) {
super.updateDisplayList(...)
if (overlayEnabled) {
var g:Graphics = this.graphics;
g.beginFill(0xFF0000, 0.5);
g.drawRect(0, 0, width, height);
g.endFill();
}
}
...
</mx:Script>
</ExistingComponent>
Aussi, ne hésitez pas à suggérer des approches différentes.
est le modifier ok? – Patrick