2010-07-05 20 views
1

Plus tôt j'ai utilisé la structure suivante:héritage mxml dans Flex. comment fonctionne "instanceof" et "est"?

Canvas -> Screen1 
Canvas -> Screen2 

Quand je me sens besoin dans la logique commune dans ma demande je faire ensuite:

Canvas -> Screen 
Screen -> Screen1 
Screen -> Screen2 

Alors, quand j'essaie de l'appliquer dans mon code

if(child is Screen){ 
    return child.localToGlobal(new Point()).x; 
} 

Ça ne marche pas! Lorsque je vois dans le débogueur, l'enfant a le type "Screen2", mais "child is Screen" me renvoie false (et "child instanceof Screen" aussi). Quand je applique clé compilateur: « -keep-generated-actionscript » Je peux voir Screen2-generated.as et il y a contient

public class Screen3 extends screens.Screen 

Merci à l'avance Désolé pour mon anglais laid =)

+0

Je ne comprends pas votre structure. Voulez-vous dire Screen1 étend Canvas? – JeffryHouser

Répondre

2

Je pense le problème provient de ce nom spécifique - il existe déjà une classe appelée Screen (dans flash.display - http://livedocs.adobe.com/flex/3/langref/flash/display/Screen.html), et Flex vérifie s'il s'agit d'une instance de l'écran d'origine.

Vous pouvez essayer deux choses:

1) Renommer votre classe d'écran à CustomScreen et essayez à nouveau.

2) Vérifiez si l'enfant est une instance de votre classe en lui référant le chemin complet par exemple. if (child is screens.Screen)

+0

Ouais !! Merci d'y penser! – semen