Domanda

Ok. quindi sto lavorando su un'app che recupera elementi da un db e costruisce una galleria. L'ho fatto un sacco di volte e dovrebbe essere semplice.

Sto riscontrando problemi, perché in questa galleria ottengo risultati da un db che include sia file di immagini che altri file. Diciamo solo che non posso cambiare altro che il flash, quindi devo rilevare se è un'immagine e visualizzarla solo se lo è.

La mia domanda è: come diavolo posso cancellare una proprietà da un oggetto senza che l'oggetto rimanga della stessa dimensione? Uso una funzione count () per generare dati di impaginazione, quindi non posso semplicemente "annullarli" e, a quanto mi risulta, delete () non è nemmeno un'opzione.

La mia soluzione per questo era semplicemente creare un altro oggetto, filtrare gli elementi buoni con un ciclo for in, quindi inserirli in un altro oggetto, ma ogni elemento nell'oggetto è un oggetto e non ho alcuna funzione push () per oggetti.

Quindi, nella disperazione, sto usando un incremento per aggiungere gli oggetti al nuovo oggetto usando un indice (goodItemsObject [index] = allItemsObject [object]), ma sembra un modo davvero raccapricciante di aggirare questo problema.

Ecco un po 'di codice:

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 () restituisce solo vero o falso, mediaObject è tutto pieno di oggetti.

Preferirei di gran lunga fare questo:

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

Mi rendo conto che potrebbe non essere possibile (eliminerebbe il ciclo for?), ma qualcosa di simile sarebbe dolce. Mi piacerebbe essere in grado di lasciare che il gc afferri tutti questi oggetti inutili che vanno in giro.

qualche idea?

grazie,

Jesse

È stato utile?

Soluzione

Quello che stai usando per archiviare il tuo oggetto ora è chiamato un array associativo. Non è possibile rimuovere un valore-chiave da un array associativo. Ciò di cui hai bisogno è un dizionario (che as3 ha un built-in http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/utils/Dictionary.html ).

import flash.utils.Dictionary;

var dict:Dictionary = new Dictionary();

quindi puoi rimuovere una chiave dal tuo dizionario chiamando

delete dict["myKey"]
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top