Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как сделать так, чтобы при загрузке картинок, они не перезаписывались? (http://www.flasher.ru/forum/showthread.php?t=142009)

zemozes 10.07.2010 10:20

Как сделать так, чтобы при загрузке картинок, они не перезаписывались?
 
Как сделать так, чтобы при загрузке картинок, они не перезаписывались?

Загружаю несколько картинок, но каждая последующая
картинка перезаписывает предыдущую картинку.
И получается, что видна только та картинка, которая была загружена последней.

Код AS3:

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadAva);
var mc:MovieClip = new MovieClip();
var mc_array:Array = new Array;
var dispObj_array:Array = new Array;
addChild(mc);
 
loader.load(new URLRequest(image_url_1));
loader.load(new URLRequest(image_url_2));
 
function onLoadAva(e:Event) : void
                        {
                                var loaderInfo:LoaderInfo = e.target as LoaderInfo;
                                //var dispObj:DisplayObject = loaderInfo.content;
                                var len_d:Number = dispObj_array.push(DisplayObject(loaderInfo.content));
                                dispObj_array[len_d-1].width = 100;
                                dispObj_array[len_d-1].height = 100;
                                //dispObj.height = 100;
                                //mc.addChild(dispObj);
                                //var tmp_mc:MovieClip = new MovieClip();
                                var len:Number = mc_array.push(new MovieClip());
                                mc_array[len-1].addEventListener(MouseEvent.CLICK, function (e:Event):void {e.target.x+=50;});
                                mc_array[len-1].addChild(dispObj_array[len_d-1]);
                                mc_array[len-1].y = 10+(Math.random()*50);
                                addChild(mc_array[len-1]);
                        }

После выполнения кода
Код AS3:

loader.load(new URLRequest(image_url_1));
loader.load(new URLRequest(image_url_2));

Видна только вторая картинка.

Если оставить только одну строчку загрузки картинки
loader.load(new URLRequest(image_url_1)); или loader.load(new URLRequest(image_url_2));
то соответственно загрузится только одна картинка.
Никак не получается сделать так, чтобы грузились две.
Видно последующая картинка затирает предыдущую картинку.

С кроссдоменником всё в порядке.
Security.allowDomain и Security.allowInsecureDomain настроены.

Zebestov 10.07.2010 12:06

Один Loader — одна картинка.
ИТОГО: сделай, например, loader1 и loader2 и обрабатывай COMPLETE обоих в своем onLoadAva.

Mur4ik 10.07.2010 16:37

Цитата:

Сообщение от Zebestov (Сообщение 921208)
Один Loader — одна картинка.

Ну зачем же так категорично, а если нужно 250 картинок?

Грузите по очереди. Загрузили первую картинку, дождались Event.COMPLETE, после можно грузить следующую и т.д.

Zebestov 10.07.2010 16:40

Цитата:

Сообщение от Mur4ik (Сообщение 921245)
Ну зачем же так категорично, а если нужно 250 картинок?

250 да. а в данном примере удобней два лоадера.

ins_nsk 10.07.2010 17:53

Замечено: загрузка нескольких изображений параллельно происходит быстрее, нежели последовательно.

iNils 10.07.2010 18:23

http://www.flasher.ru/forum/blog.php?b=207

zemozes 10.07.2010 22:34

Я в цикле гружу. Это я для примера сделал две картинки.
На самом деле картинки грузятся с flickr, в нём уж точно будет не две картинки, а больше.
Код AS3:

for (var i:Number = 0; i <= e.data.photos.photos.length-1; i++)
                                {
                                //var i:Number=0;
                                var server:String =  e.data.photos.photos[i].server;
                                var id:String =  e.data.photos.photos[i].id;
                                var secret:String = e.data.photos.photos[i].secret;
                                var image_url:String = "http://static.flickr.com/"+server+"/"+id+"_"+secret+".jpg";
                                tf.text += String(i)+"_";
                                loader.load(new URLRequest(image_url));
                                //if (i==1) {break;}
                                };

Добавлено через 8 минут
Цитата:

Сообщение от iNils (Сообщение 921257)

Спасибо, помогло.

Не работает
Код AS3:

loader.load(new URLRequest(image_url));

Работает
Код AS3:

var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadAva);
loader.load(new URLRequest(image_url));

Создаю каждый раз новый loader и работает. Грузит все картинки и отображает тоже все картинки.


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

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