Форум 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)
-   -   Загрузка массива из скрипта (http://www.flasher.ru/forum/showthread.php?t=83548)

zhalexei 08.08.2006 14:28

Запуск функции после загрузки ХML-файла
 
Во внешнем скрипте(php,JS - не принципиально) формируется массив. Как этот массив загрузить во флеш-файл?
в каком виде он должен выводится в скрипте и как читаться флеш-файлом?
Для обычных переменных(строковых, числовых) вроде понятно, а для массива не могу сделать..

wvxvw 08.08.2006 16:21

Флеш принимает либо стринг либо ХМЛ, так что вариантов не много... формируй либо то либо другое. Если массив относительно небольшой, то можно передавать его одним стрингом с каким-нибудь символом разделяющим элементы массива, если нет - строй ХМЛ...
Пример:
html
Код:

my.swf?myArr=1%23%456%2%45
flash
Код:

var myArr_arr:Array = myArr.split["%"]

zhalexei 08.08.2006 21:02

Пришлось делать через XML.
Парсинг полчается нормально, вычисляет что нужно правильно(делал по одному из примеров на flasher.ru)
но вот в чем проблема

Код:

myArray = new Array();

doc = new XML();
doc.load("doc.xml");
doc.onLoad = function (success) {
        if (success) {
                ...
                        myArray.push(value);
                ...
        }
}

trace(myArray.length);

На выходе получаю 0.
По всей видимости дело либо в области видимости переменной, либо скорее всего во времени подгрузки файла.
как быть?

KidsKilla 08.08.2006 21:04

1) сначала doc.onLoad а уж потооооом doc.load("doc.xml");
2) где у тя value?

zhalexei 08.08.2006 21:27

1)перестановка мест, вполне естессно ничего не дала
2)value находится в XML-файле

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

wvxvw 09.08.2006 03:51

Опиши подробнее, что такое value, а еще лучше - дай один нод ХМЛя и полностью функцию, которая его разбирает (парсит), иначе тяжело что-то сказать.
_global тут ни при чем. время никак не влияет, функция прописанная\вызывающаяся в onLoad вызывается тогда, когда весь ХМЛ уже загружен.
Вот тебе рабочий пример, если нужно:
Код:

var mainXML:XML = new XML();
mainXML.ignoreWhite = true;
mainXML.onLoad = function() {
        parseXML_fn(this);
};
mainXML.load("xml2load.xml");
var _arr:Array = [[],[]];
var parseXML_fn = function () {
        var _xml:XML = arguments[0];
        for (var i:XMLNode = _xml.childNodes[0].firstChild; i != null; i=i.nextSibling) {
                _arr[0].push(i.attributes.z);
                _arr[1].push(i.attributes.c);
        }
        trace("Loaded array contains these values: "+_arr);
};

XML
Код:

<m>
<n z="1" c="2"/>
<n z="3" c="4"/>
<n z="5" c="6"/>
<n z="7" c="8"/>
<n z="9" c="0"/>
</m>


RomanASDF 09.08.2006 10:04

zhalexei, если ты засунешь
Код:

trace(myArray.length);
в doc.onLoad, после всех твоих пушей , то я думаю что будет не 0.
Дело во времени загрузки xml файла - onLoad срабатывает позже чем trace

zhalexei 09.08.2006 12:56

Цитата:

Сообщение от RomanASDF
zhalexei, если ты засунешь
Код:

trace(myArray.length);
в doc.onLoad, после всех твоих пушей , то я думаю что будет не 0.
Дело во времени загрузки xml файла - onLoad срабатывает позже чем trace

пробовал.давно уже. поэтому и подумал на время загрузки. проблем а в том что в том месте где я поставил
Код:

trace(myArray.length);
должен стоять код который обрабатывает этот массив, а обработаться он не успевает..

zhalexei 09.08.2006 20:16

ну есть же наверное какие то способы задержать начало выполнения проги пока не загрузится xml-файл?

wvxvw 10.08.2006 01:22

2 zhalexei:
самое простое - поставь все скрипты на второй кадр, а в doc.onLoad пропиши gotoAndStop(2); =) хотя, это некрасивое решение =) правильно - написать изначально так, чтобы функции читающие что-либо из ХМЛя не вызывались до его загрузки =)


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

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