2009-12-08 2 views
0

Soudain, Flex semble ne pas aimer la déclaration de variables. Par exemple, j'écris (sur la partie du script d'un composant MXML)Histoire d'un bug mystérieux Flex/Actionscript

<mx:Script> 
     <![CDATA[ 
      import mx.collections.ArrayCollection; 


      var i:int = 1; 
      while(i< 9) i++; 

      [Bindable] 
       public var evolution:ArrayCollection = new ArrayCollection(); 


     ]]> 
    </mx:Script> 

Et il dit la variable i n'a pas été définie. Cela n'a aucun sens pour moi. Une supposition de ce qui pourrait avoir mal tourné? C'est arrivé tout à coup, quand j'ai mis l'évolution ArrayCollection en appelant le constructeur simple sans arguments. Je voulais ajouter des éléments en utilisant un cycle de temps à la place, mais maintenant j'ai effacé presque tout le code et je n'arrive pas à comprendre ce qui s'est mal passé, il ne semble plus reconnaître mes variables! Je deviens fou.

Répondre

3

Si vous encapsulez votre boucle dans une fonction, vous rencontrerez ce problème.

En fait, à chaque fois que vous essayez d'exécuter du code en dehors d'une fonction, vous obtenez une erreur comme celle-ci.

Par exemple, si vous avez ajouté un code définissant la propriété .source du ArrayCollection d'évolution, comme suit:

evolution.source = [1, 2, 3]; 

alors vous obtiendrez une erreur à cette ligne vous dire que « l'évolution » est définie.

Espérons que ça aide.

+0

Lol, c'était un peu stupide de ma part. Merci, je pense qu'il me faudrait un moment pour le remarquer moi-même, coder quelque chose comme Actionscript dans XML me trouble parfois. – webdreamer

1

Il ne vous dit pas que la variable i n'est pas définie, elle vous dit que la propriété i n'est pas définie.

Je ne pense pas que vous pouvez exécuter cette boucle en dehors d'une fonction réelle. Et vraiment, il n'y aurait pas de raison aussi. Si vous devez exécuter cette boucle immédiatement, vous pouvez la placer dans la fonction d'initialisation.

1

Bien que dans le fichier mxml, vous voyiez beaucoup de balises xml, mais lors de la compilation du fichier mxml, il est converti en classe. Par conséquent, il n'est pas possible d'écrire du code dans la classe qui n'est pas dans une fonction.

+0

Merci pour cette info. Je savais que tu ne pouvais pas le faire, je ne savais pas pourquoi. – invertedSpear