![]() |
|
||||||||||
|
|||||
|
[+1 14.04.08]
|
Люди добрые! Помогите ПЛЗ!!!
Пытаюсь передать данные из xml-файла в MediaController и в DataGrid. Ниче не получается. Вот скрипт: //загружаю во Флэш файл с указателями на трэки
var songs_xml:XML = new XML();
songs_xml.ignoreWhite = true;
songs_xml.onLoad = function(success:Boolean) {
if (success) {
library.dataProvider = this.firstChild;
} else {
trace("unable to load/parse library.xml");
}
};
songs_xml.load("library.xml");
// все содержимое XML-файла ложится в Tree и при событии
//SelectedNode должно упасть в MediaController
var treeListener:Object = new Object();
treeListener.change = function(evt:Object) {
var selectedMP3:XMLNode = evt.target.selectedNode;
if (evt.target.getIsBranch(selectedMP3)) {
evt.target.setIsOpen(selectedMP3, !evt.target.getIsOpen(selectedMP3), true);
} else {
var song_title:Object = new Object();
song_title = (selectedMP3.attributes.src);
updateplay_mediaconStats();
library.addEventListener("change", treeListener);
// тут по идее должно загрузиться содержимое объекта song_title
function playSong() {
//var thisSong:Object = song_title;
//stopAllSounds();
play_mediacon.setMedia(song_title);
trace(play_mediacon.setMedia);
//однако trace(play_mediacon.setMedia); вообще не появляется, следовательно в функцию ничего не приходит.
play_mediacon._playerImpl._sound.onID3 = function() {
//photos_lbl.text = this.id3.artist+" -- "+this.id3.songname+" ("+thisSong.length+")";
var id3_str:String = new String();
id3_str = "<textformat tabstops='[70]'>";
id3_str += "<b>Song:</b>\t"+this.id3.songname+newline;
id3_str += "</textformat>";
};
play_mediacon.play(1);
//photos.cover_ldr.load(thisSong.cover);
}
// осздаю таблицу, в которую потом буду ложить записи из xml-файла
this.createClassObject(DataGrid, "library", 200, {_x:10, _y:95});
library.setSize(150,410);
var title_lib:DataGridColumn = new DataGridColumn("title");
title_lib.headerText = "Title:";
title_lib.width = 300;
library.addColumn(title_lib);
library.addEventListener("change", libraryListener);
//собственно, сам скрипт подгрузки xml-файла
var songs_xml:XML = new XML();
songs_xml.ignoreWhite = true;
songs_xml.onLoad = function(success:Boolean) {
if (success) {
library.dataProvider = this.firstChild;
} else {
trace("unable to load/parse test_library.xml");
}
};
songs_xml.load("test_library.xml");
var LibraryListener:Object = new Object();
LibraryListener.change = function(evt:Object) {
var selectedMP3:XMLNode = evt.target.[color="Red"]SelectedItem[/color];// но это работает если
//откуда нибудь руками добавлять, а как сделать чтоб при загрузке
//мувика это происходило - не знаю
if (evt.target.getIsBranch(selectedMP3)) {
evt.target.setIsOpen(selectedMP3, !evt.target.getIsOpen(selectedMP3), true);
} else {
library.addItem({title:selectedMP3.attributes['label'], src:selectedMP3.attributes['src']});
updatelibraryStats();
}
};
library.addEventListener("change", DataGridListener);
Еще одна проблема - создал Accordion, в нем 3 вкладки. Как положить из XML'я в него на вкладку текст, чтоб он был отформатированный как в исходном файле, и мог прокручиваться. Создал TextArea, в него то я положил текст, но все форматирование пропало, и если _height поля больше чем _height accordion'а, то полосы прокрутки не появляются и поле попросту уходит на пределы вкладки. Помогите пожалуйста! Очень помощь нужна, в хэлпах таких замут не найти это факт, а спросить не у кого. Мне сдавать надо отчет по диплому, а у мну не работает нифига. Выгонют из универа нафиг ![]() Заранее всем большое спасибо! Последний раз редактировалось LevinSoft; 29.01.2008 в 07:37. |
|
|||||
|
Цитата:
Можно конечно сразу по срокам при парсении пехать атрибуты в addItem
__________________
"We Are The Champions My Friends!" Queen |
|
|||||
|
[+1 14.04.08]
|
CorC, а как это правильно сделать? Как сам код должен выглядеть?
|
|
|||||
|
[+1 14.04.08]
|
Вот нашел функцию, которая вроде как парсит XML, тока че то толку от этого больше не стало...
loadXML = function() {
var songs_xml:XML = new XML();
songs_xml.ignoreWhite = true;
//library.dataProvider = this.firstChild;
songs_xml.load("test_library.xml");
};
parseXML = function() {
if (songs_xml.hasChildNodes) {
var xmlRootNode = myXMLfirstChild.childNodes;
for (var i = 0; i < xmlRootNode.length; i++) {
var thisNode = xmlRootNode[i];
if (thisNode != null) {
var strDep = thisNode.childNodes[0].firstChild.nodeValue;
var strSales = thisNode.childNodes[1].firstChild.nodeValue;
var strEmpl = thisNode.childNodes[2].firstChild.nodeValue;
arrlibrary.push ({Dep:strDep,Sales:strSales,Employees:strEmpl});
}
}
}
library.dataProvider = arrlibrary;
}
|
|
|||||
|
Цитата:
Попробуйте trace и добавлять в цикле по 1 элементу addItem
__________________
"We Are The Champions My Friends!" Queen |
|
|||||
|
[+1 14.04.08]
|
- <node> <node label="Song1" src="song1.mp3" artist="Macromedia" album="Tragic Sounds" track="1" length="0:14" cover="images/cover.jpg" /> <node label="Song2" src="song2.mp3" artist="Macromedia" album="Tragic Sounds" track="2" length="0:08" cover="images/cover.jpg" /> <node label="Song3" src="song3.mp3" artist="Macromedia" album="Tragic Sounds" track="3" length="0:08" cover="images/cover.jpg" /> </node> |
|
|||||
|
Нужно еще раз прочитать про ХМЛ и нормально распарсить, а не брать чужие скрипты. Проверяйте при помощи trace что вы получаете
__________________
"We Are The Champions My Friends!" Queen |
|
|||||
|
listener
|
xml можно загнать в датагрид так:
|
|
|||||
|
[+1 14.04.08]
|
alexcon314, Поясни плиз, почему строчек
так много? Это соответствует количеству записей в файле?
|
|
|||||
|
listener
|
это "линейный" xml, т.е. просто список из энного количества строк
<node a='sss' b='dd'/> <node a='sss' b='dd'/> <node a='sss' b='dd'/> <node a='sss' b='dd'/> <node a='sss' b='dd'/> если список линейный, т.е. без вложений, то не надо ничего "парсить", вот что я хотел сказать. просто загружаете xml и пихаете его в датагрид как есть. если список с вложениями (дерево), например, есть разделы, подразделы и пр., предлагается использовать компонент Tree, который тоже кстати хавает чистый xml в качестве dataProvider'a. |
![]() |
![]() |
Часовой пояс GMT +4, время: 14:50. |
|
|
« Предыдущая тема | Следующая тема » |
|
|