Question

Ok. donc je travaille sur une application qui récupère les éléments d'une base de données et construit une galerie. Je l'ai fait une tonne de fois, et cela devrait être simple.

Je rencontre des problèmes, car dans cette galerie, les résultats d’une base de données contenant à la fois des fichiers image et d’autres sont générés. Disons simplement que je ne peux rien changer d'autre que le flash. Je dois donc détecter s'il s'agit d'une image et l'afficher uniquement si c'est le cas.

Ma question est la suivante: comment diable puis-je supprimer une propriété d'un objet sans que l'objet ait la même taille? J'utilise une fonction count () pour générer des données de pagination. Je ne peux donc pas simplement les "annuler". Si je comprends bien, delete () n'est pas une option non plus.

Ma solution à cela était de simplement créer un autre objet, filtrer les bons éléments avec une boucle for in, puis les insérer dans un autre objet, mais chaque élément de l'objet est un objet et je n'ai pas de fonction push (). pour les objets.

Ainsi, en désespoir de cause, j'utilise un incrément pour ajouter les objets au nouvel objet à l'aide d'un index (goodItemsObject [index] = allItemsObject [objet]), mais cela semble être un moyen vraiment horrible de résoudre ce problème.

Voici du code:

var filteredMO = new Object();
var newFile = 0;
for each(var file in mediaObject){
if(check_file(file)){
    filteredMO[newFile] = file;
    newFile++;
}
}
mediaObject = filteredMO;

check_file () ne fait que renvoyer true ou false, mediaObject est tout plein d'objets.

Je préférerais de beaucoup faire cela:

for each(var file in mediaObject){
    if(check_file(file)){
         //remove_from_object_for_reals(mediaObject[file]);
    }
}

Je me rends compte que cela pourrait ne pas être possible (est-ce que cela jetterait la boucle?), mais quelque chose de similaire serait adorable. J'aimerais pouvoir laisser le gc saisir tous ces objets inutiles qui traînent.

des idées?

merci,

Jesse

Était-ce utile?

La solution

Ce que vous utilisez maintenant pour stocker votre objet s'appelle un tableau associatif. Vous ne pouvez pas supprimer une valeur-clé d'un tableau associatif. Ce dont vous avez besoin, c’est un dictionnaire (as3 ayant un élément intégré http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/utils/Dictionary.html ).

import flash.utils.Dictionary;

var dict:Dictionary = new Dictionary();

alors vous pouvez supprimer une clé de votre dictionnaire en appelant

delete dict["myKey"]
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top