2010-05-28 6 views
1

J'utilise un dictionnaire dans ActionScript comme une file d'attente, en quelque sorte, toujours en train de lire la plupart du temps en tant que conteneur associatif, mais j'ai besoin d'une seule fois pour faire défiler le dictionnaire entier , comme pour (var key: String dans la file d'attente). Dans cette boucle, j'effectue des actions sur un élément, puis j'appelle delete sur cette touche.Obtenir une clé dans le dictionnaire ActionScript

Mon problème est que je voudrais attendre un événement avant d'aller chercher l'élément suivant dans cette file d'attente. Fondamentalement ma boucle for court trop vite. Je voudrais aller chercher la clé suivante tout le temps, mais je sais qu'il n'y a pas de méthode intégrée.

Une solution que j'ai pensé est d'ajouter une pause à la boucle, car for .. in récupérera automatiquement la clé suivante, mais ce serait une boucle qui s'exécute toujours une fois, simplement pour aller chercher la clé suivante. Cela semble un peu contre-intuitif. J'espère que mon problème a du sens et je cherche vraiment de meilleures idées que ce que j'ai actuellement. Merci de votre aide!

Rudy

+0

Pour simplifier, j'ai besoin de parcourir le dictionnaire. Jusqu'à présent, j'utilise pour ... mais le problème est que j'ai besoin d'attendre qu'un évènement d'EventListener se produise avant de traiter le second élément. La question est de savoir comment obtenir la "clé suivante", aussi similaire que pour ... mais sans utiliser pour ... dans s'il vous plaît? Merci. – Rudy

Répondre

0

haha, c'est un problème intéressant en effet. il ne semble pas y avoir moyen de récupérer une liste de clés du dictionnaire, à l'exception de la méthode que vous avez décrite. une alternative consisterait à mettre en cache la liste des clés lors de la première exécution, mais cela risque d'être désynchronisé et de toute façon désordonné.

Je suppose que ma question principale est pourquoi ne pouvez-vous pas faire ce que vous voulez faire avec une liste? Si vous avez besoin de 2 valeurs (par exemple, des chaînes) alors faites juste une liste d'objets :)

+0

Merci pour votre réponse. Que se passe-t-il si je stocke un ID qui fait référence à un objet. La plupart du temps, je passe un identifiant et je recherche l'objet (donc je l'utilise vraiment comme un conteneur associatif). Mais parfois j'ai besoin d'itérer, donc ça devient vraiment une file d'attente/tableau, et cela doit être dans l'ordre où les éléments étaient ordonnés. Pour ajouter une autre complexité, les clés sont bien sûr uniques, elles incrémentent des entiers commençant à 0, mais certaines de ces entrées peuvent avoir été supprimées. Nous pourrions avoir un élément avec la clé "0", "10", "11", etc ... Cela rendrait potentiellement ralenti pour moi d'itérer – Rudy

+0

juste en utilisant des entiers. Donc, pour simplifier, la clé est une valeur entière unique qui est utilisée pour rechercher l'objet mais fait également partie de l'objet. J'espère que cela explique pourquoi je n'utilise pas une liste. – Rudy

+0

je vois. vous pouvez toujours conserver une liste des identifiants, si vous en avez vraiment besoin. sinon je pense que vous avez raison, vous devrez faire un pour ... dans lequel est utilisé seulement une fois :) – oedo