Apache Adobe Flex TutorialTutoriaux Adobe Flex & AIR en Français

25mai/092

Flex ActionScript – Classe utile pour supprimer les namespace d'un XML (pour lecture e4x)

Il y a quelques mois, je tentais de faire un parse à partir des données issues d'un XML contenant des namespace.  Ce XML était en fait le retour d'un appel à un serveur WFS (serveur qui va renvoyer des données géographiques au format XML en vectoriel) mais j'ai eu les mêmes problèmes avec des serveurs WMS (serveur cartographiques en ligne). Mon principal problèmes venait du fait que malgré que le WFS et le WMS soient des formats normés, certains prennent leurs aises et les retours XML sont souvent hasardeux.

Ainsi, les namespaces sont parfois définis, parfois non et cela pose un réel problème pour la lecture e4x, qui nous facilite tant la vie. J'avais écrit deux articles la-dessus, afin de pouvoir lire ces XML avec un namespace défini ou indéfini avec des jokers:

Flex ActionScript – Lire des attributs XML ayant un Namespace différent avec e4x

Flex ActionScript – Récupérer des éléments / attributs XML avec e4x avec n'importe quel namespace

Même si ces techniques fonctionnent, il est toujours embêtant d'avoir à se soucier des namespace quand on cherche un simple accès e4x ou quand les namespaces ne sont pas predictibles.

Remplis sous: Non classé Lire la suite
25mai/092

Flex Slider – TypeError: Error #1007: Tentative d'instanciation sur un élément non constructeur [Résolu]

Voici une erreur assez étrange qui se produit quand vous ajoutez un Slider dans Flex en ActionScript avec un addChild(). Cette erreur lance une RTE (RunTime Error) au moment de l'opération.

Ce bug est déjà répertorié dans la base de bug sur le SDK Flex: [#SDK-14058] – RTE if a slider is added via addChild. Comme l'article le précise, l'erreur se situe aux tréfonds du code du SDK, à cette ligne:

private function createBackgroundTrack():void{
	if (!track){
		var trackSkinClass:Class = getStyle("trackSkin");
track = new trackSkinClass();
		if (track is ISimpleStyleClient)
			ISimpleStyleClient(track).styleName = this;
		innerSlider.addChildAt(DisplayObject(track),0);
	}
}

Quand on passe en mode debug, on se rend compte que la variable de type Class "trackSkinClass" est bien null et ne peut donc pas passer dans le constructeur. Apparemment, le problème vient du fait que la classe Slider n'a pas de sélecteur CSS. Quand le code essaie de faire getStyle("trackSkin");, il obtient donc une valeur nulle. HSlider et VSlider ont un sélecteur mais pas Slider.