Вопрос

Хорошо.поэтому я работаю над приложением, которое извлекает элементы из базы данных и создает галерею.Я делал это много раз, и это должно быть просто.

У меня проблемы, потому что в этой галерее я получаю результаты из базы данных, которая включает как файлы изображений, так и другие файлы.Скажем так, я не могу ничего изменить, кроме вспышки, поэтому мне нужно определить, является ли это изображением, и отобразить его только в том случае, если это так.

Мой вопрос:Как, черт возьми, я могу удалить свойство объекта, чтобы объект не оставался того же размера?Я использую функцию count() для генерации данных о нумерации страниц, поэтому я не могу просто обнулить их, и, насколько я понимаю, delete() тоже не вариант.

Мое решение заключалось в том, чтобы просто создать еще один объект, отфильтровать хорошие элементы с помощью цикла for, а затем вставить их в другой объект, но каждый элемент в объекте является объектом, и у меня нет функции push() для объектов.

Итак, в отчаянии я использую приращение для добавления объектов к новому объекту с помощью индекса (goodItemsObject[index] = allItemsObject[object]), но это кажется действительно ужасным способом обойти эту проблему.

Вот код:

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() просто возвращает true или false, а mediaObject полон объектов.

Я бы предпочел сделать это:

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

Я понимаю, что это может быть невозможно (сбросит ли это цикл for?), но что-то подобное было бы здорово.Мне бы очень хотелось, чтобы сборщик мусора мог схватить все эти болтающиеся бесполезные предметы.

Любые идеи?

Спасибо,

Джесси

Это было полезно?

Решение

То, что вы сейчас используете для хранения своего объекта, называется ассоциативным массивом.Вы не можете удалить ключ-значение из ассоциативного массива.Что вам нужно, так это словарь (который в as3 имеет встроенный http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/utils/Dictionary.html).

import flash.utils.Dictionary;

var dict:Dictionary = new Dictionary();

то вы можете удалить ключ из своего словаря, вызвав

delete dict["myKey"]
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top