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

CROL 23.08.2008 06:57

как подгрузить свку [i] кол-во раз
 
в главный свф (index.swf) подгружаеться XML (clan.xml)
Код:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<clan>
  <pers>
      <nick>nick1</nick>
      <about>about1</about>
  </pers>
  <pers>
      <nick>nick2</nick>
      <about>about2</about>
  </pers>
  <pers>
      <nick>nick3</nick>
      <about>about3</about>
  </pers>
</clan>

так же есть другая флешка (info.swf) она должна подгрузиться в index.swf столько раз, сколько тегов <pers> в clan.xml в разные мувики.
собственно вопрос как подгрузить их?

пишу в index.swf :
Код:

function loadXML(loaded) {
if (loaded) {
xmlPers = this.firstChild;
nick = [];
about = [];
total = xmlPers.childNodes.length;
for (i=0; i<total; i++) {
nick[i] = xmlPers.childNodes[i].childNodes[0].firstChild.nodeValue;
about[i] = xmlPers.childNodes[i].childNodes[1].firstChild.nodeValue;
}
}
}
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("clan.xml");

смотрю скока всего тегов <pers>, вытаскиваю значения с присвоением [i]


Дальше не могу понять что делать... не подскажите?

MrPoma 23.08.2008 09:08

Создайте мувик-контейнер и с помощью MoviClipLoader'а грузите в него info.swf сколько угодно раз.

Wolsh 23.08.2008 10:26

У Вас же есть уже цикл, в котором Вы читаете XML. Ну и загружайте новую свфку при каждой итерации по персу. (Хотя, имхо, я бы лучше аттачил с либы. Или допускается ситуация отсутствия персов?))))

CROL 23.08.2008 18:19

ээээ... так не работает...что не так?
Код:

function loadXML(loaded) {
if (loaded) {
xmlPers = this.firstChild;
nick = [];
about = [];
total = xmlPers.childNodes.length;
for (i=0; i<total; i++) {
nick[i] = xmlPers.childNodes[i].childNodes[0].firstChild.nodeValue;
about[i] = xmlPers.childNodes[i].childNodes[1].firstChild.nodeValue;
createEmptyMovieClip("container"+[i], getNextHighestDepth());
container[i].loadMovie("info.swf")

};
};
};
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("clan.xml");


Obi 23.08.2008 18:29

Код:

function loadXML(loaded) {
if (loaded) {
xmlPers = this.firstChild;
nick = [];
about = [];
total = xmlPers.childNodes.length;
for (i=0; i<total; i++) {
nick[i] = xmlPers.childNodes[i].childNodes[0].firstChild.nodeValue;
about[i] = xmlPers.childNodes[i].childNodes[1].firstChild.nodeValue;
createEmptyMovieClip("container"+[i], getNextHighestDepth());
container[i].loadMovie("info.swf")
};

};
};
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("clan.xml");


CROL 23.08.2008 18:35

obi, так тоже не подгружает =(...пробовал так...но тоже не работает
Код:

function loadXML(loaded) {
if (loaded) {
xmlPers = this.firstChild;
nick = [];
about = [];
total = xmlPers.childNodes.length;
for (i=0; i<total; i++) {
nick[i] = xmlPers.childNodes[i].childNodes[0].firstChild.nodeValue;
about[i] = xmlPers.childNodes[i].childNodes[1].firstChild.nodeValue;
createEmptyMovieClip("container"+[i], getNextHighestDepth());
var infoLoader:MovieClipLoader = new MovieClipLoader();
infoLoader.loadClip("info.swf", container[i]);

};
};
};
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("clan.xml");


Wolsh 23.08.2008 19:10

Что еще за container[i] ?
Код:

function loadXML(loaded) {
if (loaded) {
xmlPers = this.firstChild;
nick = [];
about = [];
total = xmlPers.childNodes.length;
for (i=0; i<total; i++) {
nick[i] = xmlPers.childNodes[i].childNodes[0].firstChild.nodeValue;
about[i] = xmlPers.childNodes[i].childNodes[1].firstChild.nodeValue;
var clip:MovieClip = createEmptyMovieClip("container"+[i], getNextHighestDepth());
clip.loadMovie("info.swf")

};
};
};
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("clan.xml");


CROL 23.08.2008 19:21

Спасибо большое 8)

CROL 23.08.2008 19:41

и как теперь отправить значение nick[i] в container[i]?

Wolsh 23.08.2008 22:03

Элементарно)))) Надо просто грузить не в сам clip, а создавать в нем пустой мувиклип и загружать свф в него, а данные хранить в контейнере (clip, "container"+i). Просто после загрузки внешней свф в клип тот теряет "неродные" свойства. А контейнер их запомнит, потому что в него не будет загружаться ничего, он не поменяется))
Ну примерно так:
Код:

function loadXML(loaded) {
    if (loaded) {
        xmlPers = this.firstChild;
        nick = [];
        about = [];
        total = xmlPers.childNodes.length;
        for (i=0; i<total; i++) {
            nick[i] = xmlPers.childNodes[i].childNodes[0].firstChild.nodeValue;
            about[i] = xmlPers.childNodes[i].childNodes[1].firstChild.nodeValue;
            var clip:MovieClip = createEmptyMovieClip("container"+[i], getNextHighestDepth());
            var informer:MovieClip = clip.createEmptyMovieClip("informer", 1);
            clip.id = i;
            informer.loadMovie("info.swf")
        };
    };
};
xmlData = new XML();
xmlData.ignoreWhite = true;
xmlData.onLoad = loadXML;
xmlData.load("clan.xml");
////
trace("клип: "+container3+"\nNick: "+nick[container3.id]+"\nabout: "+about[container3.id])

Ну только трейс надо после загрузки делать))) loadMovie уже сто лет не используют, загрузку не отловить.
Ну и, конечно, Вы можете хранить ник и описание не в массиве, а в свойствах самого контейнера, если нужно, также как id))

CROL 23.08.2008 22:21

просто в info.swf подгружаеться другой XML, а ссыслка на него следующая
Код:

"www.site.ru/" + nick + ".xml"

Wolsh 24.08.2008 00:32

Вложений: 1
Вот набросал тебе исходник.


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

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