Форум 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. Не могу найти в чём проблема (http://www.flasher.ru/forum/showthread.php?t=134830)

_rev 10.01.2010 15:13

XML. Не могу найти в чём проблема
 
Есть XML:
Код:

<?xml version="1.0" encoding="windows-1251"?>
<projects>
<project swf="/content/images/promo/3.swf" link="/mikom_pelmeni/" type="Логотип" client="Миком" />
<project swf="/content/images/promo/_1.swf" link="/mikom_catalog/" type="Логотип" client="Миком" />
<project swf="/content/images/promo/2.swf" link="/mikom_stend/" type="Логотип" client="Гора Пильная" />
<project swf="/content/images/promo/4.swf" link="/mikom_advert/" type="Оформление транспорта" client="Миком" />
<project swf="/content/images/promo/5.swf" link="/panorama_advert/" type="Наружная реклама" client="Панорама" />
<project swf="/content/images/promo/_6.swf" link="/myasodar_catalog/" type="Полиграфия" client="Мясодар" />
<project swf="/content/images/promo/Picture_1.png" link="" type="Полиграфия" client="Спутник" />
<project swf="/content/images/promo/" link="" type="Полиграфия" client="Полипластик Урал" />
<project swf="/content/images/promo/11.swf" link="" type="Полиграфия" client="Полипластик Урал" />
<project swf="/content/images/promo/" link="" type="Рекламная кампания" client="Роллер" />
<project swf="/content/images/promo/" link="" type="Логотип" client="ТОРТиКо" />
<project swf="/content/images/promo/" link="" type="Полиграфия" client="Авторизованный сервисный центр" />
</projects>

Я его загружаю и пытаюсь отрейсить хотя бы один элемент, вот так:

Код AS1/AS2:

myXML = new XML();
myXML.ignoreWhite = true;
myXML.load("xml/main_swf.xml");
 
myXML.onLoad = function(success) {
 
        var projects = myXML.firstChild;
        max = projects.childNodes.length;
        _root.quantity=max-1;
        for (var i = 0; i<max; i++) {
                var swf = projects.childNodes[i].attributes.swf;
                var link = projects.childNodes[i].attributes.link;
                var client = projects.childNodes[i].attributes.client;
                _root.swf.push(swf);
                _root.link.push(link);
                _root.client.push(client);
        };
 
trace(_root.link[1]);
};

а в output пишется undefined
Что не так, подскажите плиз кто может, а то я уже устал головой об это биться)):wacko:

Hauts 10.01.2010 15:23

А у вас есть вначале кода "_root.link = [];" ?

Вы пишите "var projects" с "var", а почему max так же не объявляете?

Кстати, может быть правильнее называть во множественном числе? У вас же несколько ссылок. Вместо "_root.link" называть "_root.links". И переменная max вам, в принципе, не нужна. Поставьте условие цикла "for (var i = 0; i<projects.childNodes.length; i++)".

udaaff 10.01.2010 16:22

Цитата:

И переменная max вам, в принципе, не нужна.
Лучше с ней.

Hauts 10.01.2010 16:34

Сорри, ошибся, "_root.quantity=max-1;" не заметил. С max правильнее.

udaaff 10.01.2010 17:11

Цитата:

Сорри, ошибся, "_root.quantity=max-1;" не заметил. С max правильнее.
Я не об этом.
Точка тоже оператор и выражение projects.childNodes.length будет вычисляться при каждой итерации, если его в условии использовать.
Код AS1/AS2:

var i:Number;
var array:Array = new Array(1e6);
 
var t:Number = getTimer();
var length:Number = array.length;
for (i = 0; i < length; i++)
{
}
var dt1:Number = getTimer() - t;
 
t = getTimer();
for (i = 0; i < array.length; i++)
{
}
var dt2:Number = getTimer() - t;
 
// Первый вариант на 11.5902964959569% быстрее.
trace("Первый вариант на " + (1 - dt1 / dt2) * 100 + "% быстрее.");


Hauts 10.01.2010 17:43

Спасибо большое, вот этого я не знал.

_rev 10.01.2010 17:55

поставил _root.link = []; и осталные объявления, но проблему это не решило – всё тот же undefined

причем, если оттрейсить _root.myXML, выводит
<?xml version="1.0" encoding="windows-1251"?><projects />
судя по всему, он не берет вложенные элементы, но вот почему? :o

Hauts 10.01.2010 18:10

Может UTF-8 попробуете?

<?xml version="1.0" encoding="UTF-8" ?>

_rev 10.01.2010 18:32

Цитата:

Может UTF-8 попробуете?
Не помогло :(

udaaff 10.01.2010 18:45

Цитата:

Сообщение от Hauts (Сообщение 878045)
Может UTF-8 попробуете?

<?xml version="1.0" encoding="UTF-8" ?>

Инструкции по обработке флешем не анализируются. Эта строчка нужна только для порядка.
Нужно файл сохранять в utf-8.

Цитата:

поставил _root.link = []; и осталные объявления, но проблему это не решило – всё тот же undefined
Полный код приведите, где вы что поставили.


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

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