Дублировать содержимое загрузчика несколько раз с помощью addChild ()? - PullRequest
0 голосов
/ 18 августа 2011

У меня небольшая проблема. Я динамически загружаю файл JPG, используя класс Loader. Все работает, за исключением того, что если я хочу добавить изображение еще несколько раз, используя addChild (loader.content), оно просто не работает. Он всегда удаляет предыдущий экземпляр и оставляет только последний. Я перепробовал все, но безуспешно. Вот мой код:

var loaderContext:LoaderContext = new LoaderContext(true);
var imageLoader:Loader = new Loader();
imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaderDone);
var fileRequest:URLRequest = new URLRequest('http://127.0.0.1/blah/blah.jpg');
imageLoader.load(fileRequest, loaderContext);

var imageLoaderDone:Function = function(e){
    var k:int = landHolder.numChildren;
    while(k--) {
        landHolder.removeChildAt(k);
    }
    var howManyTimes:int = Math.ceil(1000 / e.content.width);

    var i:int = 0;
    while(i < howManyTimes) {
        var zombie:Sprite = new Sprite();
        zombie.addChild(e.content);
        zombie.x = i*zombie.width;
        landHolder.addChild(zombie); //here's the problem, it does not duplicate
        //landHolder is empty MovieClip placed on the stage
        i++;
    }

    landHolder.alpha = 1

}

Спасибо.

Ответы [ 2 ]

5 голосов
/ 18 августа 2011

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

var loadedBitmap : Bitmap = e.content as Bitmap;
var clonedBitmap : Bitmap;
for(var i:Number = 0; i<100; i++) {
    clonedBitmap = new Bitmap(loadedBitmap.bitmapData.clone());
    clonedBitmap.x = i*clonedBitmap.width;
    landHolder.addChild(clonedBitmap);
}

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

1 голос
/ 18 августа 2011

Загруженный контент является единственным экземпляром DisplayObject.Что вы делаете, это перемещаете этот экземпляр по нескольким спрайтам, которые вы создаете в своем цикле.Наконец, ваш экземпляр добавляется к последнему спрайту, а все остальные пусты.

Различные возможности:

  1. Попробуйте настроить отдельный загрузчик для каждого контейнера спрайта- загрузка того же ресурса.Браузер будет кэшировать изображение, поэтому он не будет загружать его несколько раз с сервера.

  2. Вставить ваше изображение и создать несколько его экземпляров.

  3. Поиск алгоритма дублирования экранных объектов с использованием AS3.

    Обнаружил это: http://www.kirupa.com/forum/showthread.php?223798-ActionScript-3-Tip-of-the-Day&p=1939827#post1939827, но не проверил.Я уверен, что здесь уже размещены решения.

    Прочтите также этот ответ: AS3: Копирование загрузчика из одного объекта в другой

    Или это: http://blog.andredickson.net/?p=56

    Или вот это: Дубликат изображения с Haxe

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