Проблема с загрузчиком изображений AS3 - PullRequest
0 голосов
/ 12 марта 2011

У меня есть простая флеш-галерея изображений.Он работает так, как будто он использует мувиклип, называемый «picContain», в который он загружает изображение, альфа-вверх, ждет несколько секунд, затем перебирает и повторяет процесс.

Код перебирает массив для источников изображений.Он проходит столько же раз, сколько элементов в массиве.Проблема в том, что с течением времени (около 15 минут или около того) загрузка изображения занимает все больше времени.Я предполагаю, что это потому, что он не выгружает последнее изображение, которое было загружено в содержащий клип.Вот часть моего кода, которая загружает изображение:

  function imageLoaded(e:Event) {
    imageLoader.width = 1013;
    imageLoader.height = 760;
    Bitmap(imageLoader.content).smoothing = true;
    picContain.addChild(imageLoader);
    alphUp(picContain); // my alpha up function
}

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

Спасибо за вашу помощь.

Ответы [ 3 ]

0 голосов
/ 12 марта 2011

У клипов действительно есть имя экземпляра, вы просто не знаете их. Отследите это - вы, вероятно, получите «экземпляр 23» или что-то в этом роде.

Приведенный выше ответ определенно сработает для вас, но может вызвать проблемы, если ваша логика не сложна. Не имея какой-либо другой ссылки (такой как «имя» или реквизит, полученный из расширенного класса), вы можете удалить неправильный контент.

Также - убедитесь, что правильно помечены для сборки мусора - такого рода сценарий - утечка памяти, просящаяся случиться. Просто убедитесь, что ваш счетчик ссылок равен 0, и установите instance = null после того, как вы удалили его из списка отображения. Вы должны быть установлены.

удачи!

0 голосов
/ 12 марта 2011

Не думаю, что проблема в том, что загрузка изображения занимает все больше и больше времени. Более того, вы никогда не выгружаете каждое находящееся там изображение, и я предполагаю, что вы оставляете их все в альфа = 0, скорее чем настройка visible = false.

15 минут изображений, настроенных на альфа-смешение друг с другом, вероятно, убивают ваш компьютер: D

Более длительное время загрузки, вероятно, является результатом падения частоты кадров.

Используйте предложение removeChildAt () от Taurayi. Если у вас более 1 ребенка, поместите его в цикл while:

while( picContain.numChildren > 0 )
    picContain.removeChildAt( 0 );
0 голосов
/ 12 марта 2011

Простой способ получить ссылку на ImageLoader с помощью метода getChildAt () контейнера контейнера экранного объекта picContain. Вы должны указать индекс ImageLoader в контейнере вашего экранного объекта picContain как единственный аргумент getChildAt () (для следующего я предполагаю, что он равен 0):

picContain.removeChild(picContain.getChildAt(0));

или вы можете просто использовать метод removeChildAt ():

picContain.removeChildAt(0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...