PDA

Просмотр полной версии : Как загружать внешние JPG проблема со слушателем!


Androidwww
04.10.2013, 16:57
Хочу нарисовать несколько прямоугольников и заполнить их текстурами взятыми из внешних JPG
заполнять beginBitmapFill я научился! но возникла проблема с функцией слушателем!!! который я запускаю после прорисовки КАЖДОГО! прямоугольника. Слушатель отрабатывает ТОЛЬКО последний!!!
выглядит так как будто она работает сама по себе...
Вот образец кода:


var g:Graphics;
var x1:int; var y1:int; var x2:int; var y2:int;
var IMG:String;
var loaderIMG:Loader=new Loader();
var spriteIMG:Sprite = new Sprite();


graf(10,100,20,300,0x777777,"quadro1.jpg");
graf(110,200,20,300,0x777777,"quadro2.jpg");
graf(210,300,20,300,0x777777,"quadro3.jpg");
graf(310,400,20,300,0x777777,"quadro4.jpg");

function graf(xx1,xx2,yy1,yy2,colorL,IMG):void
{
// присваиваем значения переменным :
x1 = xx1; x2 = xx2; y1 = yy1; y2 = yy2;
trace(' =========================== КООРДИНАТЫ: '+' '+x1+' '+x2+' '+y1+' '+y2);

addChild(spriteIMG);
g = spriteIMG.graphics;
g.lineStyle(0.5, colorL);
g.moveTo(x1, y1);
g.lineTo(x1, y2);
g.lineTo(x2, y2);
g.lineTo(x2, y1);
g.lineTo(x1, y1);

trace(' ВОТ ТУТ ЗАПУСКАЕМ СЛУШАТЕЛЯ: ');
loaderIMG.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadIMG);
loaderIMG.load(new URLRequest(IMG));
}


function onLoadIMG(e:Event):void
{
trace(' НО ОН ГРУЗИТ ТОЛЬКО ПОСЛЕДНИЙ ФАЙЛ!!! Координаты '+' '+x1+' '+x2+' '+y1+' '+y2);
spriteIMG.addChild(loaderIMG);
loaderIMG.x = x1; loaderIMG.y = y1;
addChild(spriteIMG);
}



Результаты трейсов:

=========================== КООРДИНАТЫ: 10 100 20 300
ВОТ ТУТ ЗАПУСКАЕМ СЛУШАТЕЛЯ:
=========================== КООРДИНАТЫ: 110 200 20 300
ВОТ ТУТ ЗАПУСКАЕМ СЛУШАТЕЛЯ:
=========================== КООРДИНАТЫ: 210 300 20 300
ВОТ ТУТ ЗАПУСКАЕМ СЛУШАТЕЛЯ:
=========================== КООРДИНАТЫ: 310 400 20 300
ВОТ ТУТ ЗАПУСКАЕМ СЛУШАТЕЛЯ:
НО ОН ГРУЗИТ ТОЛЬКО ПОСЛЕДНИЙ ФАЙЛ!!! Координаты 310 400 20 300

Подскажите что надо чтобы отрабатывал все подгрузки!!!

AlexCooper
04.10.2013, 18:25
Перенесите var loaderIMG:Loader=new Loader(); в тело цикла. А в обработчике onLoadIMG замените loaderIMG на e.target.content

Добавлено через 29 минут
да и с позиционирование у Вас проблемы. + Писать в кадрах не хорошо)

Androidwww
05.10.2013, 07:17
Благодарю! кое что изменилось... Слушатель отрабатывает столько раз сколько надо, но в самом конце и координаты подставляет последние )

КОД:var g:Graphics;
var x1:int; var y1:int; var x2:int; var y2:int;
var IMG:String;
//var loaderIMG:Loader=new Loader();
var spriteIMG:Sprite = new Sprite();


graf(10,100,20,300,0x777777,"t1.jpg");
graf(110,200,20,300,0x777777,"t2.jpg");
graf(210,300,20,300,0x777777,"t3.jpg");
graf(310,400,20,300,0x777777,"t4.jpg");

function graf(xx1,xx2,yy1,yy2,colorL,JPG):void
{

// присваиваем значения переменным :
x1 = xx1; x2 = xx2; y1 = yy1; y2 = yy2; IMG = JPG;
trace(' =========================== КООРДИНАТЫ: '+' '+x1+' '+x2+' '+y1+' '+y2);

addChild(spriteIMG);
g = spriteIMG.graphics;
g.lineStyle(0.5, colorL);
g.moveTo(x1, y1);
g.lineTo(x1, y2);
g.lineTo(x2, y2);
g.lineTo(x2, y1);
g.lineTo(x1, y1);

trace(' ВОТ ТУТ ЗАПУСКАЕМ СЛУШАТЕЛЯ: ');
var loaderIMG:Loader=new Loader();
loaderIMG.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadIMG);
loaderIMG.load(new URLRequest(IMG));
}


function onLoadIMG(e:Event):void
{
trace(' Координаты в СЛУШАТЕЛЕ '+' '+x1+' '+x2+' '+y1+' '+y2+' '+IMG);
spriteIMG.addChild(e.target.content);
e.target.content.x = x1; e.target.content.y = y1;
addChild(spriteIMG);
}

ТРЭЙС: =========================== КООРДИНАТЫ: 10 100 20 300
ВОТ ТУТ ЗАПУСКАЕМ СЛУШАТЕЛЯ:
=========================== КООРДИНАТЫ: 110 200 20 300
ВОТ ТУТ ЗАПУСКАЕМ СЛУШАТЕЛЯ:
=========================== КООРДИНАТЫ: 210 300 20 300
ВОТ ТУТ ЗАПУСКАЕМ СЛУШАТЕЛЯ:
=========================== КООРДИНАТЫ: 310 400 20 300
ВОТ ТУТ ЗАПУСКАЕМ СЛУШАТЕЛЯ:
Координаты в СЛУШАТЕЛЕ 310 400 20 300 t4.jpg
Координаты в СЛУШАТЕЛЕ 310 400 20 300 t4.jpg
Координаты в СЛУШАТЕЛЕ 310 400 20 300 t4.jpg
Координаты в СЛУШАТЕЛЕ 310 400 20 300 t4.jpg