PDA

Просмотр полной версии : Не срабатывает слушатель...


zomkoner
25.01.2013, 01:29
вот код:
import flash.net.URLRequest;
import flash.display.Loader;
import flash.events.Event;
import flash.display.Sprite;

var conteiner:Sprite = new Sprite();
var sqlVariables:URLVariables ;
var sqlRequest:URLRequest = new URLRequest();
var sqlLoader:URLLoader = new URLLoader();
var dataRequest:URLRequest = new URLRequest();
var dataLoader:Loader = new Loader();
var dataArr:Array = new Array();
var LineDataImage:int;

phpInXML(new URLVariables("pass=пар&sex=man"), "http://face_out.php");

function phpInXML(sqlZapros:URLVariables, phpAdres:String):void{
addChild(conteiner);
sqlVariables = sqlZapros;
sqlRequest.url = phpAdres;
sqlRequest.method = URLRequestMethod.POST;
sqlRequest.data = sqlVariables;
sqlLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
sqlLoader.addEventListener(Event.COMPLETE, completeXML);
sqlLoader.load(sqlRequest);
}

function completeXML(e:Event):void{
sqlLoader.removeEventListener(Event.COMPLETE, completeXML);
var respons:XML = new XML(e.target.data.result);
var responsList:XMLList = respons.stroka;
for each (var strokaXML:XML in responsList) {
addElementFunc(strokaXML.nomer, strokaXML.href);
}
LineDataImage=0;
loadImageData(LineDataImage);
}
function loadImageData(numLine:int):void{
if(numLine>dataArr.length){
}else{
dataRequest.url = dataArr[numLine].src;
dataLoader.addEventListener(Event.COMPLETE, dataImageComplete);
dataLoader.load(dataRequest);
trace(dataArr[numLine].src);
}
}

function dataImageComplete(e:Event):void{
trace("sad");
dataLoader.x = dataArr[LineDataImage].xImage;
dataLoader.y = dataArr[LineDataImage].yImage;
conteiner.addChild(dataLoader);
LineDataImage ++;
loadImageData(LineDataImage);
}

function dataLoadComplete(e:Event):void{
trace('ok');
var sprite:Sprite = new Sprite();
addChild(sprite);
sprite.addChild(dataLoader);
}

function addElementFunc(numElement:int, hrefElement:String):void{
var numY:int = int(numElement - 1);
numY= int(numY / 3 + 1);
var numX:int = (numElement - 1);
numX = int(numX % 3);
var xElement:int = (numX * 80);
var yElement:int = (numY * 80);
var shapes:Shape = new Shape();
conteiner.addChild(shapes);
shapes.graphics.lineStyle(2, 0x33CCCC, 0.6);
shapes.graphics.beginFill(0x99FFCC, 0.4);
shapes.graphics.drawRoundRect(xElement + 80,yElement,70,70,40);
dataArr.push({xImage:xElement, yImage:yElement, src : hrefElement});
}
первым вызывается функция загрузки xml с сервера:
phpInXML(new URLVariables("pass=пар&sex=man"), "http://face_out.php");

function phpInXML(sqlZapros:URLVariables, phpAdres:String):void{
addChild(conteiner);
sqlVariables = sqlZapros;
sqlRequest.url = phpAdres;
sqlRequest.method = URLRequestMethod.POST;
sqlRequest.data = sqlVariables;
sqlLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
sqlLoader.addEventListener(Event.COMPLETE, completeXML);
sqlLoader.load(sqlRequest);
}
далее после завершения загрузки по слушателю вызывается функция которая удаляет предыдущий слушатель и разберает xml (xml следующим постом выложу), и каждый прогоняет через функцию addElementFunc(strokaXML.nomer, strokaXML.href);:
function completeXML(e:Event):void{
sqlLoader.removeEventListener(Event.COMPLETE, completeXML);
var respons:XML = new XML(e.target.data.result);
var responsList:XMLList = respons.stroka;
for each (var strokaXML:XML in responsList) {
addElementFunc(strokaXML.nomer, strokaXML.href);
}
LineDataImage=0;
loadImageData(LineDataImage);
}
эта функция заносит каждуе значение ссылки на картинку и её координаты в массив
function addElementFunc(numElement:int, hrefElement:String):void{
var numY:int = int(numElement - 1);
numY= int(numY / 3 + 1);
var numX:int = (numElement - 1);
numX = int(numX % 3);
var xElement:int = (numX * 80);
var yElement:int = (numY * 80);
var shapes:Shape = new Shape();
conteiner.addChild(shapes);
shapes.graphics.lineStyle(2, 0x33CCCC, 0.6);
shapes.graphics.beginFill(0x99FFCC, 0.4);
shapes.graphics.drawRoundRect(xElement + 80,yElement,70,70,40);
dataArr.push({xImage:xElement, yImage:yElement, src : hrefElement});
}
после завершения цикла вызывается функция:
LineDataImage=0;
loadImageData(LineDataImage);
в которой установка координат loadera и слушатель который почему то не работает...
function loadImageData(numLine:int):void{
if(numLine>dataArr.length){
}else{
dataRequest.url = dataArr[numLine].src;
dataLoader.addEventListener(Event.COMPLETE, dataImageComplete);
dataLoader.load(dataRequest);
trace(dataArr[numLine].src);
}
}
этот трейс выдает ссылку на картинку...
а вот этот слушатель :
dataLoader.addEventListener(Event.COMPLETE, dataImageComplete);
некак не срабатывает...почему?
ЗЫ : вроде бы изложил суть вопроса...

dimarik
25.01.2013, 02:32
а вот этот слушатель :
dataLoader.addEventListener(Event.COMPLETE, dataImageComplete);
некак не срабатывает...почему?


Может быть стоит подписаться на пару "ошибочных" событий -- IOErrorEvent.IO_ERROR и SecurityErrorEvent.SECURITY_ERROR?
Не пробовал использовать многократно один объект URLRequest. Может быть тут собака порылась?

P.S. Прошу прощения. Правилами форума запрещены оскорбления.

zomkoner
25.01.2013, 02:36
dimarik IOErrorEvent.IO_ERROR прописывал, по советам из предыдущей теме. Событие все равно не срабатывает, а вот за реквест спасибо, сейчас попробую!

Добавлено через 3 минуты
А что делать с вариабле который прописан на первом реквесте?
sqlRequest.url = phpAdres;
sqlRequest.method = URLRequestMethod.POST;
sqlRequest.data = sqlVariables;

dimarik
25.01.2013, 02:46
А что с вариабле не так? Вариабле сидит рядом со мной и Реквестом. Пьем томатный сок и обсуждаем переходы на личности. А вы задавали какой-то вопрос, связанный с ним (с ней)?

Добавлено через 18 минут
dataLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, dataImageComplete);

zomkoner
25.01.2013, 03:21
Спасибо! Помогло!

Добавлено через 4 минуты
Подскажи ещё пожалуйста как можно передать изображение загруженное в loader в другую переменную, чтобы при повторном использовании Loader картинка не исчезала?

mooncar
25.01.2013, 04:25
zomkoner,
1. Одна тема - один вопрос.
2. Нельзя пренебрегать правилами оформления сообщений, на которые вам указывает администрация или модератор.
3. Обсуждение действий администрации форума - только в приватном режиме.
4. Хоть на ЛС вы ссылаетесь, но видимо, не читаете (это не рассуждение, а предложение проверить ЛС).