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

zomkoner 24.01.2013 21:38

приоритет слушателей
 
может я конечно и неправильно назвал тему, но всё же! вот код:
Код AS3:

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();
 
phpInXML(new URLVariables("pass=&sex=man"), "http://.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);
              }
}
 
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);
dataLoader.x=xElement;
dataLoader.y = yElement;
dataRequest.url = hrefElement;
dataLoader.addEventListener(Event.COMPLETE, dataLoadComplete);
dataLoader.load(dataRequest);
}

почему функция dataLoadComplete не вызываеться?

strangedk 24.01.2013 21:46

а addElementFunc вызывается?

zomkoner 24.01.2013 21:51

да! и вырисовывает всё! в xml содержит 7 строк! номера и ссылки! вот квадратики для картинок в функции addElementFunc вызываються а dataLoadComplete нет! проверял трэйсом!

strangedk 24.01.2013 21:56

Значит dataLoader.load(dataRequest); не срабатывает успешно.
Проверьте значение dataRequest.url, и можете помимо Event.COMPLETE слушать так же событие об ошибке:

Код AS3:

dataLoader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
function errorHandler(e:Event):void {
  trace("error load");
}


zomkoner 24.01.2013 22:06

Код AS3:

dataRequest.url = hrefElement;
dataLoader.addEventListener(IOErrorEvent.IO_ERROR, error);
dataLoader.load(dataRequest);
}
function error(e:Event):void{
        trace("error load");
}

трэёс и в этом случае не пашет!

strangedk 24.01.2013 22:24

У вас один и тот же лоадер в цикле. Не успевая загрузить одно, он уже начинает грузить другое. Так нельзя.
Нужно дожидаться когда он загрузит одно, и потом по событию COMPLETE грузить следующий элемент

zomkoner 24.01.2013 22:34

Код AS3:

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);
              }
}

я же удаляю в самом начале предыдущий слушатель! а в цикле просто вызов функции!
ну а хотя да ты прав цикл бегает быстрее чем грузится картинка и сразу же вызывает грузить следующий... но так хотя бы последнюю картинку загрузить должен! или нет?

Добавлено через 18 минут
помогите решить проблемку... а? ведь понятно же что мне нужно сделать... подскажите а?

Добавлено через 28 минут
пожалуйста!

Добавлено через 2 часа 23 минуты
даже в таком случае:
Код AS3:

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});
}

доходит только до сюда и один раз! а надо 7!
Код AS3:

                dataRequest.url = dataArr[numLine].src;
                dataLoader.addEventListener(Event.COMPLETE, dataImageComplete);
                dataLoader.load(dataRequest);
                trace(dataArr[numLine].src);
        }

трэйсер выводит ссылку а слушатель на dataLoader не пашет.... в этот то раз почему?

dimarik 25.01.2013 01:10

Название темы не отражает сути вопроса. Попробуйте еще раз. Ваша манера изложения заставляет тянуться к плюсомету.


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

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