PDA

Просмотр полной версии : Как выдерать текст из DynamicText и вставлять в ListBox


Azo
03.01.2009, 23:57
Есть DynamicText с именем 'pole' (обычный Динамический текст)
Есть ListBox с именем 'ListBox1'

Изначально в DynamicText существует следующий текст
(он загружен из PHP с музыкального сайта) :


<track>
<annotation>1. muzika_1.mp3</annotation>
<location>mp3/muzika_1.mp3</location>
<info></info>
</track>
<track>
<annotation>2. Super_muzika_2.mp3</annotation>
<location>mp3/Super_muzika_2.mp3</location>
<info></info>
</track>
<track>
<annotation>3. Madonna_1.mp3</annotation>
<location>mp3/Madonna_1.mp3</location>
<info></info>
</track>

.... и т.д.


-----------------------------
Наша задача скопировать строчки которые находятся между <location> и </location> добавляя их в ListBox


ListBox1.addItem(stroka_1);
....
ListBox1.addItem(stroka_n);


В общем чтобы в ListBox наблюдалось что то типа:

muzika_1.mp3
Super_muzika_2.mp3
Madonna_1.mp3


PS: Поиск в тексте я нащел! Спасибо Жень Шень
Поиск по DynamicText (http://www.flasher.ru/forum/showpost.php?p=774847&postcount=3)
Но вот как скопировать определенную строчку из текста в ЛистБокс?((((
Очень надеюсь на ваш ответ! :rolleyes:

amexdesign
04.01.2009, 03:06
<track>
<annotation>1. muzika_1.mp3</annotation>
<location>mp3/muzika_1.mp3</location>
<info></info>
</track>
<track>
<annotation>2. Super_muzika_2.mp3</annotation>
<location>mp3/Super_muzika_2.mp3</location>
<info></info>
</track>
<track>
<annotation>3. Madonna_1.mp3</annotation>
<location>mp3/Madonna_1.mp3</location>
<info></info>
</track>

.... и т.д.
данный код имеет структуру XML. непоннятно, зачем загружать его сначало в динамический текст, если можно этот файл грузить как XML на _root фильма и передовать вариабле из узлов напрямую в ЛистБокс?
пологаю, что ЛистБокс - это компонент, лежащий на рабочем столе?

dimarik
04.01.2009, 15:20
Реальные пацаны не ищут легких путей! Правда, Azo? =)

var ListBox1: ListBox;

var doc:XML = new XML();
doc.ignoreWhite = true;
doc.parseXML(pole.text);

var node: XMLNode;
var subnode: XMLNode;
while (node = doc.firstChild) {
while(subnode = node.firstChild) {
if (subnode.nodeName == 'location') {
ListBox1.addItem(subnode.nodeValue);
}
subnode.removeNode();
}
node.removeNode();
}

Azo
04.01.2009, 16:28
dimarik, xDDDDDDDDDDD

Добавлено через 5 часов 5 минут
Ладно, тогда если без динамического текста..
Как загрузить php файл, (который со структурой xml) во Flash

<?xml version='1.0' encoding='UTF-8' ?>
<playlist version='1' xmlns='http://xspf.org/ns/0/'>
<title>Sample PHP Generated Playlist</title>
<info>http://www.jeroenwijering.com/</info>
<trackList>

<track>
<annotation>1. muzika_1.mp3</annotation>
<location>mp3/muzika_1.mp3</location>
<info></info>
</track>
<track>
<annotation>2. Super_muzika_2.mp3</annotation>
<location>mp3/Super_muzika_2.mp3</location>
<info></info>
</track>
<track>
<annotation>3. Madonna_1.mp3</annotation>
<location>mp3/Madonna_1.mp3</location>
<info></info>
</track>

.... и т.д.

причем добавляя каждые строчки, которые между <location> и </location> в наш ListBox...

PS dimarik Твой код не работает(

трас выводит:

interface 'ListBox' could not be loaded.
var ListBox1: ListBox;

amexdesign
05.01.2009, 06:31
причем добавляя каждые строчки, которые между <location> и </location> в наш ListBox...
в этом случае вы грузите линк к музыке, лучше грузить в ListBox то, что стоит между <annotation> и </annotation>, т.е. названия, а затем при нажатии грузить сам музон, примерно вот так

dimarik
05.01.2009, 15:32
dimarik Твой код не работает(

трас выводит:

interface 'ListBox' could not be loaded.
var ListBox1: ListBox;


Да, ошибся, тип должен быть List. Смутило Ваше название экземпляра компонента (ListBox1). Конечно, исправьте на import fl.controls.List;

var ListBox1: List;
И проследите за тем, чтобы компонент List находился на сцене перед исполнением данного куска кода.

Кстати, что это за практика, называть экземпляры с заглавной буквы? Вы от этого избавляйтесь скорее.

Добавлено через 27 минут
amexdesign, в Вашем примере неявно вызывается метод _root.parseXML из области видимости объекта XML, который в свою очередь имеет такой же метод. Простой вызов parseXML() в теле обработчика XML.onLoad без указания области видимости может запутать вашего коллегу, либо Вас самих через пару месяцев. С этим нужно быть аккуратнее. Используйте self-reference переменную в подобных случаях. А еще лучше - выбирайте имя метода, отличное от нативного.

Azo
05.01.2009, 17:02
Спасибо доюрые люди за помощь!
Кстати, знаете почему я вначале хотел чтобы сначало xml загружался в Текст?
Да потому что без этого он (Флешка) зависает на долго! файл php(xml) то большой ой ой ой...

a script in this movie is causing Flash Player to run slowly... abort the script?...

dimarik
05.01.2009, 22:02
Соболезную =)