О загрузке XML-файлов я уже писал, но тогда было мало внимания уделено обработке и использованию загруженного XML-а. И сегодня будет рассмотрен один из способов использования внешнего xml-файла - визуализация данных, полученных из XML-файла, с помощью компонента DataGrid. Это может быть полезно, например, при создании таблицы рекордов в игре, вывода табличных данных в приложениях и т. д...
Допустим, что у нас в XML хранится таблица рекордов от какой-то игры. Сам XML-файл имеет следующий вид...
Код XML:
<?xml version="1.0" encoding="UTF-8" ?>
<table>
<user name="Елена" score="1"></user>
<user name="Ирина" score="2"></user>
<user name="Наталья" score="3"></user>
</table>
Мы хотим вывести данные из XML-файла на экран и собираемся для этого воспользоваться компонентом DataGrid.
Первым делом, нам нужен сам компонент DataGrid. В Adobe Flash находим этот компонент и перетаскиваем его в библиотеку нашего флеш-проекта.
Потом переходим к коду...
Код ActionScript 3.0:
/*
импорт классов
*/
import fl.controls.DataGrid;
import fl.controls.dataGridClasses.DataGridColumn;
import fl.data.DataProvider;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.*;
/*
загрузка XML-файла
*/
var loader:URLLoader = new URLLoader();
loader.load(new URLRequest("table.xml"));
loader.addEventListener(Event.COMPLETE,onComplete);
/*
функция, которая выполняется после успешной загрузки XML-файла
*/
function onComplete(event:Event):void
{
/*
переменная, хранящая XML-файл
*/
var myxml:XML = XML(event.target.data);
/*
создаём столбец "Имя"
*/
var users:DataGridColumn = new DataGridColumn("name");//создаём столбец и в качестве параметра указываем имя столбца
users.headerText = "Имя";//заголовок столбца
users.width = 150;//ширина столбца
/*
создаём столбец "Очки"
*/
var scores:DataGridColumn = new DataGridColumn("score");//создаём столбец и в качестве параметра указываем имя столбца
scores.headerText = "Очки";//заголовок столбца
scores.width = 100;//ширина столбца
/*
создаём поставщика данных на основе ранее загруженного XML-документа
*/
var dp:DataProvider = new DataProvider(myxml);
/*
создаём компонент DataGrid
*/
var dg:DataGrid = new DataGrid();
addChild(dg);//добавляем в список отображения
dg.x = 150;//позиционируем по оси X
dg.y = 100;//позиционируем по оси Y
dg.width = 250;//ширина таблицы
dg.headerHeight = 40;//высота заголовка таблицы
dg.rowHeight = 30;//высота строк в таблице
dg.columns = [users,scores];//указываем столбцы для нашей таблицы
dg.dataProvider = dp;//источник данных для таблицы
dg.rowCount = dg.length;//число строк, видимых в таблице
}
Результат:
Вот и всё.
Скачать исходники к данному уроку (под Adobe Flash CS 5.5).