2010-01-19 7 views
3

J'ai un document xml que je voudrais utiliser pour montrer MovieClips dans mon fla:Convertir un noeud XML à un MovieClip

<linkedMovieClip>TestClip</linkedMovieClip> 

Dans mon fla, je créé un symbole appelé TestClip et sélectionnez Liaison > Exporter pour Actionscript et l'appeler TestClip.

Mon code dans ma classe de document retrace l'xml:

var t:*= getDefinitionByName(String(slideItem.linkedMovieClip)) as Class; 
var linked:MovieClip = new t(); 
trace("linked is..."+ linked); // outputs [Object TestClip]; 

Cependant, quand je compile, je reçois une erreur # 1065.

ReferenceError: Error #1065: Variable is not defined. 
    at global/flash.utils::getDefinitionByName() 

J'ai cherché et par de nombreux sites recommandés, y compris les importations suivantes:

import flash.utils.getDefinitionByName; 
import TestClip; 

Et j'inclus la variable fictive suivante:

public var _dummyClip:TestClip; 

Cependant, je reçois toujours un message d'erreur . Quand je vérifie le débogueur, il est de cette ligne:

var t:*= getDefinitionByName(String(slideItem.linkedMovieClip)) as Class; 

Quelqu'un peut-il conseiller?

Répondre

1

Votre code semble correct. Essayez de créer une instance de TestClip dans votre programme pour vous assurer qu'il est compilé dans le fichier SWF. Avec la réponse ci-dessus Trace le nom complet et assurez-vous qu'il est en effet TestClip

var _dummyClip:TestClip = new TestClip(); 
trace(flash.getQualifiedClassName(_dummyClip));//what does it trace? 
1

, je vois mon problème.

Mon XML ressemblait à:

<items> 
<item><linkedMovieClip>TestClip</linkedMovieClip></item> 
<item><linkedMovieClip>TestClip</linkedMovieClip></item> 
<item><linkedMovieClip>TestClip</linkedMovieClip></item> 
<item></item> 
<item><linkedMovieClip>TestClip</linkedMovieClip></item> 
<item></item> 
</items> 

à savoir certains éléments avaient des noeuds, certains n'a pas.

Lorsque j'utilise une boucle for each (var item:XML in itemList) pour itérer mes noeuds XML() les noeuds qui ne contiennent pas le noeud échoue et renvoie l'erreur de référence (car il n'y a pas de noeud appelé « linkedMovieClip ».

Si je une instruction if pour vérifier l'existence du nœud, cela fonctionne:

if (xmlListname.linkedMovieClip != undefined) { 

     trace(String(xmlListname.linkedMovieClip)); 
    var c:* = getDefinitionByName(String(xmlListname.linkedMovieClip)) as Class; 
     var mc:MovieClip = new c(); 
    trace(mc); 
} 
Questions connexes