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

cdc7600 14.01.2009 15:10

не подгружается XML
 
на сцене 7 экземпляров клипов, вложенных в один (для удобства скрола)
пытаюсь загрузить в каждый картинку, но трассируется, что адрес не определён, не подскажите в чём проблема?
Код AS1/AS2:

function loadXML(loaded) {
        if (loaded) {
                xmlNode = this.firstChild;
                image = [];
                description = [];
                total = xmlNode.childNodes.length;
                for (i=0; i<total; i++) {
                        image[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
                        description[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
                }
 
        } else {
                content = "file not loaded!";
        }
}
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("1.xml");
 
dsk.dsk1.loadMovie(image[0], 1);
dsk.dsk2.loadMovie(image[1], 1);
dsk.dsk3.loadMovie(image[2], 1);
dsk.dsk4.loadMovie(image[3], 1);
dsk.dsk5.loadMovie(image[4], 1);
dsk.dsk6.loadMovie(image[5], 1);
dsk.dsk7.loadMovie(image[6], 1);

хмл
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<images>
<pic>
<image>img/1.jpg</image>
<caption>dsk1</caption>
</pic>
<pic>
<image>img/2.jpg</image>
<caption>dsk2</caption>
</pic>
<pic>
<image>img/3.jpg</image>
<caption>dsk3</caption>
</pic>
<pic>
<image>img/4.jpg</image>
<caption>dsk4</caption>
</pic>
<pic>
<image>img/5.jpg</image>
<caption>dsk5</caption>
</pic>
</images>

DarkLight 14.01.2009 15:13

Выполнение ActionScript-кода является асинхронным, а Вы пишете код, считая его синхронным. Строки
Цитата:

xmlData.load("1.xml");
dsk.dsk1.loadMovie(image[0], 1);
выполнятся сразу друг за другом, поэтому пути неопределенные и получаются.
Загружайте картинки после того, как удостоверились, что xml загружен.

P. S. Вместо loadMovie давно рекомендуется использовать MovieClipLoader, дающий больший контроль над процессом загрузки.

cdc7600 14.01.2009 16:01

добавила такую проверку, но всё равно не помогает (
а с классом MovieClipLoader, весьма сложно получится
Код AS1/AS2:

dsk.dsk1.onEnterFrame = function() {
 
filesize = dsk.dsk1.getBytesTotal();
loaded = dsk.dsk1.getBytesLoaded();
if (loaded == filesize) {
dsk.dsk1.loadMovie(image[0], 1);
 
}
}


amexdesign 14.01.2009 16:09

если уж далее с loadMovie, то вот так:
Код AS1/AS2:

function loadXML(loaded) {
        if (loaded) {
                xmlNode = this.firstChild;
                image = [];
                description = [];
                total = xmlNode.childNodes.length;
                for (i=0; i<total; i++) {
                        image[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
                        description[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
                        dsk.dsk1.loadMovie(image[0], 1);
                        dsk.dsk2.loadMovie(image[1], 1);
                        dsk.dsk3.loadMovie(image[2], 1);
                        dsk.dsk4.loadMovie(image[3], 1);
                        dsk.dsk5.loadMovie(image[4], 1);
dsk.dsk6.loadMovie(image[5], 1);
dsk.dsk7.loadMovie(image[6], 1);
                }
 
        } else {
                content = "file not loaded!";
        }
}
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("1.xml");

но DarkLight совершенно прав насчёт MovieClipLoader, и ничего сложного

Добавлено через 3 минуты
небольшая поправочка:
Код AS1/AS2:

function loadXML(loaded) {
        if (loaded) {
                xmlNode = this.firstChild;
                image = [];
                description = [];
                total = xmlNode.childNodes.length;
                for (i=0; i<total; i++) {
                        image[i] = xmlNode.childNodes[i].childNodes[0].firstChild.nodeValue;
                        description[i] = xmlNode.childNodes[i].childNodes[1].firstChild.nodeValue;
                }
                dsk.dsk1.loadMovie(image[0], 1);
                dsk.dsk2.loadMovie(image[1], 1);
                dsk.dsk3.loadMovie(image[2], 1);
                dsk.dsk4.loadMovie(image[3], 1);
                dsk.dsk5.loadMovie(image[4], 1);
                dsk.dsk6.loadMovie(image[5], 1);
                dsk.dsk7.loadMovie(image[6], 1);
 
        } else {
                content = "file not loaded!";
        }
}
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("1.xml");


cdc7600 14.01.2009 16:15

спасибо большое) посмотрю ёщё раз MovieClipLoader, может разберусь)


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

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