Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   addChild у Loader (http://www.flasher.ru/forum/showthread.php?t=140047)

КорДум 21.05.2010 20:01

Так, открываем хелп и что мы видим?
Чтобы удалить загруженный экранный объект, необходимо удалить объект Loader из дочернего массива родительского объекта DisplayObjectContainer.

Добавлено через 4 минуты
То есть, я так понимаю, что нужно правильно удалять содержимое и заново пересоздавать лоадер.

Follower 21.05.2010 20:10

Сделал, нет теперь ошибок, только вот и загружаться он не хочет. Хотя стоит правильный листенер, не запускается связанная с ним функция.
Код AS3:

        var temp1,temp2:String;
        removeChild(l[0].content);
        removeChild(l[t].content);
        l[0].unload;
        l[t].unload;
        temp1=l[0].contentLoaderInfo.url;
        temp2=l[t].contentLoaderInfo.url;
        l[0]=new Loader;
        l[t]=new Loader;
        l[0].addEventListener(Event.COMPLETE, Dostalo);
        l[t].addEventListener(Event.COMPLETE, Dostalo);
        l[0].load(new URLRequest(temp2));
        l[t].load(new URLRequest(temp1));
}
 
function Dostalo(e:Event):void {
        e.target.removeEventListener(Event.COMPLETE, Dostalo);
        addChild(e.target.content);
}


КорДум 21.05.2010 20:16

Сначала загружаем, затем присоединяем слушатель. Ну и советик, чтобы не запутаться, лучше сгруппировать код одного лоадера отдельно от второго.

Follower 21.05.2010 20:32

Что вы мне тут советуете)
Детская ошибка ведь. Я-то ладно, AS неделю знаю, но вы-то)
Листенер к contentLoaderInfo цепляется.

КорДум 21.05.2010 20:36

Хех, каюсь, не заметил. А может и я АС3 знаю неделю?) Ну да, невнимательность - порок.

Follower 21.05.2010 21:18

Фууух. Это было... неописуемо. По заявкам могу выслать этот памятник индусскому коду. Зато работает! Причем неплохо, и защищен от дураков средней руки.

Добавлено через 25 часов 25 минут
Adobe Flash невообразимо коварен, и когда я уже думал, что все, он опять подложил мне этакого поросеночка.

Суть в том, что запущенный из самого CS3 проект работает и грузит картинки, а вставленный в html - нет. Swf из проекта и экспортнутый идентичны, другой swf со сходными методами работает, будучи вставленный в такой же точно html. Кто-нибудь сталкивался?

ninth 24.05.2010 04:00

Чуточку не туда вопрос задал...

Хотя Follower сталкивался с подобным. Может сможете объяснить.

Как передать урл картинки, которая должна загружаться после клика по клипу превьюшке?
И что нужно для того, чтоб картинки не грузились хаотично(грузятся почемуто в произвольном порядке), а именно 00, 01, 02 ит.д. (то бишь по порядку)?

В общем простенький код:

Код AS3:

var mc:Sprite = new Sprite();
addChild(mc);
 
for (var i:int = 0; i <= 3; i++) {
        var minLoader:Loader = new Loader();
        minLoader.contentLoaderInfo.addEventListener(Event.INIT, ok);
        minLoader.load(new URLRequest("0" + i + ".jpg"));
}
function ok(event:Event):void {
        var mc_2:MovieClip = new MovieClip();
        mc.addChild(mc_2);
        var bitmap:Bitmap=Bitmap(event.target.content);
        if (mc.width>0) {
                bitmap.x=mc.width+10;
        }
        mc_2.addEventListener(MouseEvent.CLICK, go);
        function go(MouseEvent):void {
                trace(mc_2.name);
        }
        mc_2.addChild(bitmap);
}


КорДум 24.05.2010 12:19

Какие-то картинки весят меньше - они быстрее и грузятся. Здесь нужно переделать логику кода. А именно сделать примерно так:
Грузим первую картинку, ловим событие Event.COMPLETE, словили, загрузили вторую картинку, ловим событие...и так далее.
Цитата:

Как передать урл картинки, которая должна загружаться после клика по клипу превьюшке?
А тут вам помогут два массива - массив ссылок на превьюшки и массив ссылок на картинки. Ну, соответствующий индекс одного массива будет относиться к такому же индексу элемента в другом.

ninth 24.05.2010 23:27

Да вот именнонад этим я и бьюсь. Как всё это дело проследить и организовать?
Цитата:

Сообщение от КорДум (Сообщение 910521)
Грузим первую картинку, ловим событие Event.COMPLETE, словили, загрузили вторую картинку, ловим событие...и так далее.


КорДум 24.05.2010 23:36

Я бы сделал так, ничего другого в голову пока не приходит:
Код AS3:

private var picArr:Array = new Array("url1", "url2", ... , "urlN");
private var i:uint = 0;
...
var loader:Loader = new Loader();
loader.load(new URLRequest(picArr[i]));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
...
 
private function loadComplete(e:Event):void {
        e.target.removeEventListener(Event.COMPLETE, loadComplete);
        i++;
        if (picArr[i] !== null) {
                var loader:Loader = new Loader();
                loader.load(new URLRequest(picArr[i]));
                loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
        }
}

Могут быть ошибки, писал все прям тут без автокомплита и прочих обленивающих вещей.


Часовой пояс GMT +4, время: 06:18.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.