Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   xml.onLoad = function(); //not success (http://www.flasher.ru/forum/showthread.php?t=94792)

FFfsam 20.04.2007 02:22

xml.onLoad = function(); //not success
 
Здравствуйте!
Наверное глупый вопрос, но для меня важный. Подобный следующему коду взял из хелпа самого флэша:

Код:

stop();

function on_load(success){
        if(success){
                text_out = "succes";
                cfg_xml.parseXML();
                gotoAndStop(2);
        }
        else{
                text_out = "not succes";
        }
}

var cfg_xml:XML = new XML();
cfg_xml.ignoreWhite = true;
cfg_xml.onLoad = on_load();
cfg_xml.load("cfg.xml");

Почему "text_out" всегда "not succes"? означает ли это сfg.xml не подгрузился? И зачем вообще слово "success" в атрибуты функции ставить?
Спасибо.

Kikasso 20.04.2007 02:32

потому что
Код:

cfg_xml.onLoad = on_load;
не результат работы функции, а она сама.
И еще неплохо status проверять:
Код:

function on_load(success){
        if(!success || this.status < 0){
                text_out = "ERROR>" + this.status;
                return;
        }
        // тут все нормально
}


FFfsam 20.04.2007 13:18

Kikasso
Цитата:

не результат работы функции, а она сама.
Не понял что имели ввиду. Здесь я просто запускаю функцию on_load() по событию onLoad.

А статус вроде можно проверить только после парсинга?
Вообще интересно: функция вызывается, success = undefinded и, соответсвенно text_out = "not succes", а когда смотрю List Variables то загруженный xml там присутствует.

Kikasso 20.04.2007 13:23

Я имел в виду скобки убрать. У вас функция выполняется в момент "присвоения".

если не верите, напишите так:
Код:

cfg_xml.onLoad = on_load(true);
, а строчку cfg_xml.load(что-то) закомментируйте.

Парсится xml автоматически, та строчка про parseXML лишняя.

FFfsam 20.04.2007 13:36

без скобок функция не вызывается

Kikasso 20.04.2007 13:37

Идите обратно в хелп и посмотрите внимательно.

FFfsam 20.04.2007 15:08

В общем в первом фрейме:
Код:

cfg_xml = new XML;
cfg_xml.ignoreWhite = true;
cfg_xml.load("cfg.xml");

В третьем фрейме:
Код:

if(cfg_xml.loaded != true){
        trace("false");
        gotoAndPlay(2);}
else{
        trace("true");
        stop();}

Так все заработало.
А так как вы писали у меня не получается. Если не сложно - приведите полностью формат правильной записи.

dhunter 20.04.2007 16:17

а почему нельзя так написать?
Код:

stop()
cfg_xml = new XML;
cfg_xml.ignoreWhite = true;
cfg_xml.load("cfg.xml");
cfg_xml.onLoad = function(success) {
if(success){gotoAndPlay(2);trace("success")}else{trace("not success")}
}


FFfsam 20.04.2007 17:19

dhunter, ваш код работает!
но если поставить: cfg_xml:XML = new XML вместо cfg_xml = new XML или function(success:Boolean) вместо function(success) (так приведено в хелпе) - то не работает! :)

etc 20.04.2007 17:21

Потому что типизация должна использоваться вместе с var в данном случае (в первой строке).


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

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