Pregunta

Ok. entonces estoy trabajando en una aplicación que recupera elementos de una base de datos y construye una galería. Lo he hecho muchas veces, y debería ser simple.

Tengo problemas, porque en esta galería, obtengo resultados de una base de datos que incluye tanto archivos de imagen como otros archivos. Digamos que no puedo cambiar nada más que el flash, así que necesito detectar si es una imagen y solo mostrarla si lo es.

Mi pregunta es: ¿cómo diablos puedo eliminar una propiedad de un objeto sin que el objeto permanezca del mismo tamaño? Utilizo una función count () para generar datos de paginación, por lo que no puedo simplemente 'anularlos' y, según tengo entendido, eliminar () tampoco es una opción.

Mi solución para esto fue simplemente crear otro objeto, filtrar los elementos buenos con un bucle for, luego introducirlos en otro objeto, pero cada elemento del objeto es un objeto, y no tengo la función push () para objetos.

Entonces, en la desesperación, estoy usando un incremento para agregar los objetos al nuevo objeto usando un índice (goodItemsObject [index] = allItemsObject [object]), pero esa parece ser una forma realmente horrible de solucionar este problema.

Aquí hay un código:

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 () solo devuelve verdadero o falso, mediaObject está lleno de objetos.

Preferiría mucho hacer esto:

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

Me doy cuenta de que podría no ser posible (¿eliminaría el bucle for?), pero algo similar sería bueno. Me encantaría permitir que el gc tome todos estos objetos inútiles que cuelgan.

alguna idea?

gracias,

Jesse

¿Fue útil?

Solución

Lo que está utilizando para almacenar su objeto ahora se llama una matriz asociativa. No puede eliminar un valor-clave de una matriz asociativa. Lo que necesita es un diccionario (que as3 tiene uno incorporado http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/utils/Dictionary.html ).

import flash.utils.Dictionary;

var dict:Dictionary = new Dictionary();

entonces puede eliminar una clave de su diccionario llamando

delete dict["myKey"]
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top