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

zomkoner 25.01.2013 01:29

Не срабатывает слушатель...
 
вот код:
Код 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});
}

первым вызывается функция загрузки xml с сервера:
Код AS3:

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);:
Код 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);
              }
        LineDataImage=0;
        loadImageData(LineDataImage);
}

эта функция заносит каждуе значение ссылки на картинку и её координаты в массив
Код AS3:

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

после завершения цикла вызывается функция:
Код AS3:

        LineDataImage=0;
        loadImageData(LineDataImage);

в которой установка координат loadera и слушатель который почему то не работает...
Код AS3:

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

этот трейс выдает ссылку на картинку...
а вот этот слушатель :
Код AS3:

dataLoader.addEventListener(Event.COMPLETE, dataImageComplete);

некак не срабатывает...почему?
ЗЫ : вроде бы изложил суть вопроса...

dimarik 25.01.2013 02:32

Цитата:

Сообщение от zomkoner (Сообщение 1117621)
а вот этот слушатель :
Код AS3:

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 минуты
А что делать с вариабле который прописан на первом реквесте?
Код AS3:

sqlRequest.url = phpAdres;
sqlRequest.method = URLRequestMethod.POST;
sqlRequest.data = sqlVariables;


dimarik 25.01.2013 02:46

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

Добавлено через 18 минут
Код AS3:

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. Хоть на ЛС вы ссылаетесь, но видимо, не читаете (это не рассуждение, а предложение проверить ЛС).


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

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