Je travaille actuellement sur un composant personnalisé qui étend Canvas (appelons-le SuperCanvas); Il s'agit essentiellement d'un conteneur qui vous permet de zoomer & son contenu.Déplacement des enfants d'un conteneur (défini en MXML) dans un "conteneur interne"
Il serait trop long d'expliquer pourquoi, mais je ne peux pas utiliser scrollRect, donc je suis obligé de déclarer un objet Canvas (appelé innerCanvas) ... dans mes SuperCanvas (je sais, pas très gentil = /)
Je voudrais savoir s'il existe un moyen approprié de "rediriger" la création des enfants de mon composant dans ce canevas.
Laissez-moi vous expliquer:
<comp:SuperCanvas id="superCanvas">
<mx:Image id="img" source="image.jpg"/>
<mx:Label id="lbl" text="Sample"/>
</comp:SuperCanvas>
Avec cela, img et LBL sont ajoutés à mes SuperCanvas. Je veux qu'ils soient ajoutés à superCanvas.innerCanvas à la place.
Je ne peux pas remplacer les méthodes add/removeChild pour faire la "redirection", puisque je ne pourrai pas ajouter cette innerCanvas ...
J'ai donc essayé ceci:
<comp:SuperCanvas>
<comp:innerCanvas>
<mx:Image id="img" source="image.jpg"/>
<mx:Label id="lbl" text="Sample"/>
</comp:innerCanvas>
</comp:SuperCanvas>
Mais Flex se plaint que "Dans l'initialiseur pour 'contenu': tapez mx.controls.Image n'est pas assignable au type cible mx.containers.Canvas". J'ai lu que je pourrais utiliser un tableau de UIComponents avec un méta-code [ArrayElementType], et instancier manuellement des objets, mais je cherche une solution plus simple (et probablement appropriée).
J'ai également vu la propriété childDescriptor (qui contient des descriptions pour chaque enfant défini dans le fichier MXML), mais elle est en lecture seule, donc je ne peux pas la passer à innerCanvas.
Si je ne suis pas assez clair, ne pas hésiter à me demander precisions, l'anglais est pas ma langue maternelle, il est donc assez difficile d'expliquer les choses bien =/
Toute aide serait grandement appréciée, je suis complètement coincé.
EDIT: Ma classe SuperCanvas (moins les importations et le zoom & logique pan qui n'a pas d'importance ici):
public class SuperCanvas extends Canvas
{
public innerCanvas:Canvas = new Canvas();
public function SuperCanvas()
{
super();
addChild(innerCanvas);
}
}
Quelle est la définition des classes SuperCanvas, innerCanvas? – Patrick
J'ai édité ma question avec la définition. –