Форум 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=131538)

PRosTo_LEva 22.10.2009 17:35

Повторить картинку много раз
 
Вот у меня появилась необходимость одну и ту же картинку вывести несколько раз. Как правильно это сделать естественно не знаю... решил методом проб и ошибок пойти. Цикл создал, но вот в чем беда картинка выводится 1 раз в самом конце цикла.

Код AS3:

var imgarray:Array = new Array();
var imgLoader:Loader = new Loader()
for (var i:int=0; i<120; i++){
        hpLoader.load (new URLRequest("img/hp.gif"));
        hpLoader.x = (30+i);
        hpLoader.y = 30;
        imgarray[i] = (hpLoader);
        addChild(imgarray[i]);
        }


Zebestov 22.10.2009 17:51

Первым делом надо дождаться загрузки изображения - addEventListener
Когда изображение загрузится, зафиксируй его BitmapData и уже потом в цикле наделай с него новых Bitmap и расставь их по нужным местам.

PRosTo_LEva 22.10.2009 23:32

а как зафиксировать его с помощью BitmapData ?

murz 22.10.2009 23:52

надо дождаться загрузки картинки, сохранить ее битмапДату, а потом отрисовать нужную фигуру(круг, прямоугольник) используя метод beginBitmapFill(), вот ссылка http://help.adobe.com/ru_RU/AS3LCR/F...itmapFill.html

PRosTo_LEva 23.10.2009 00:21

Большое спасибо всем
 
Выполнил скрипт вот таким вот образом:

Код AS3:

var hpLoader:Loader = new Loader();
hpLoader.contentLoaderInfo.addEventListener(Event.INIT, initHandler);
hpLoader.load(new URLRequest("img/18.gif"));
function initHandler(event:Event):void {
            var hpLoader:Loader = Loader(event.target.loader);
                        var picture:Bitmap = (hpLoader.content as Bitmap);
                        for (var i:int=0; i<5; i++){               
                        var hpimages:Bitmap = new Bitmap(picture.bitmapData);
                                hpimages.x = (30+i*5);
                        super.addChild(hpimages);}
}

Поставленную задачу выполняет, но вот мне почему-то кажется что намудрил я сильно.
Вариант решения задачи нашел на etcs.ru, отдельное спасибо автору. Он мне, к стати, уже не раз помогал.

Zebestov 23.10.2009 01:44

Код AS3:

var hpLoader:Loader = new Loader();
hpLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, initHandler);
hpLoader.load(new URLRequest("img/18.gif"));
 
function initHandler(event:Event):void {
            var picture:Bitmap = e.target.loader.content;
            var hpImages:Array = new Array();
            for (var i:uint = 0; i < 5; i++)
            {               
                hpImages[i] = new Bitmap(picture.bitmapData);
                hpImages[i].x = (30 + i*5);
                addChild(hpImages);
            }
}

Только вот если задача таки растайлить — тогда конечно, как советовал murz, целесообразней залить изображением область.

PRosTo_LEva 23.10.2009 02:32

Еще крайне глупый вопрос, но я не знаю как быть.. у меня по верх картинки должен быть текст а он получается под картинками =(

Zebestov 23.10.2009 03:04

Делай addChild текста после того, как понаставишь картинок — кто последний, тот и сверху.
Это в случае если они все (текст, картинки) дети одного контейнера.


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

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