Frage

Ok. so arbeite ich an einer Anwendung, die Elemente aus einem db abruft und baut eine Galerie. Ich habe dies eine Tonne mal getan, und es sollte einfach sein.

Ich laufe in Probleme, weil in dieser Galerie, ich Ergebnisse aus einer db erhalten, die sowohl Bilddateien und andere Dateien enthält. Sagen wir einfach, ich nichts anderes als die Flash ändern kann, so muss ich erkennen, ob es ein Bild ist, und es nur angezeigt, wenn es ist.

Meine Frage ist: Wie zum Teufel kann ich eine Eigenschaft von einem Objekt ohne das Objekt löschen die gleiche Größe zu bleiben? Ich benutze eine Funktion count () Paginierung Daten zu erzeugen, so kann ich nicht nur ‚Null‘ sie, und wie ich es verstehe, löschen () ist keine Option.

Meine Lösung für dies war nur ein anderes Objekt zu erstellen, filtert, die guten Einzelteile mit einem für in Schleife, Pop sie dann in einem anderen Objekt, aber jedes Element in dem Objekt ist ein Objekt, und ich habe keine push () Funktion für Objekte.

unter Verwendung eines Index (goodItemsObject [index] = allItemsObject [object])

Also, in Verzweiflung, verwende ich eine Zunahme der Objekte in das neue Objekt hinzuzufügen, aber das scheint wie ein wirklich grausige Art und Weise, um dieses Problem zu bekommen.

Hier ist ein 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 () nur wahr oder falsch zurückgibt, ist alles voll von mediaobject Objekten.

Ich würde viel lieber tun dies werden:

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

Ich weiß, dass nicht möglich sein könnte (es wäre die for-Schleife abwerfen?), Aber etwas Ähnliches wäre süß. Ich würde gerne in der Lage sein, die gc zu lassen all diese nutzlosen Objekte greifen hängen.

irgendwelche Ideen?

Danke,

Jesse

War es hilfreich?

Lösung

Was Sie mit Ihrem Objekt speichern nun ein assoziatives Array bezeichnet. Sie können einen Schlüssel-Wert aus einem assoziativen Array entfernen. Was Sie brauchen, ist ein Wörterbuch ist (die AS3 ein Build-in hat man http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/utils/Dictionary.html ).

import flash.utils.Dictionary;

var dict:Dictionary = new Dictionary();

, dann können Sie einen Schlüssel aus dem Wörterbuch entfernen durch den Aufruf

delete dict["myKey"]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top