Гистограмма или гистограмма — это диаграмма с прямоугольными столбцами, длина которых пропорциональна значениям, которые они представляют. Они обычно используются для сравнения двух или более значений, которые были взяты во времени или при различных условиях, обычно в небольших наборах данных.
В этом уроке мы создадим генератор гистограмм с использованием XML и AS3.
Шаг 1: Краткий обзор
Используя ActionScript 3, мы получим необходимые данные графика из файла XML, а затем отобразим преобразованные данные в виде анимированных полос и информационной области.
Шаг 2: Начало
Откройте Flash и создайте новый файл Flash (ActionScript 3).

Установите размер сцены 600×300 и добавьте серый радиальный фон (# E6E6E6, #CCCCCC).

Наш генератор графиков будет создан полностью с помощью кода, так что это будет единственное, что вы будете делать в рабочей области.
Шаг 3: XML
Откройте ваш любимый XML-редактор (любой текстовый редактор будет работать) и добавьте следующие строки:
|
1
2
3
4
5
6
7
|
<?xml version=»1.0″?>
<graphs width=»50″>
<graph name=»Yellow» value=»50″ color=»0xFDC13E»/>
<graph name=»Blue» value=»80″ color=»0x25B7E2″/>
<graph name=»Green» value=»30″ color=»0xB8CF36″/>
<graph name=»Red» value=»10″ color=»0xE7473F»/>
</graphs>
|
Это XML, который мы будем использовать для получения данных, мы будем использовать не имена детей, а атрибуты.
- ширина : ширина каждого бара.
- name : имя элемента, отображаемого в информационной области.
- значение : значение этого элемента, отображаемое в верхней части столбцов.
- color : цвет бара в шестнадцатеричном формате.
Это файл, который конечный пользователь должен будет отредактировать, чтобы показать свои собственные данные.
Шаг 4: ActionScript!
Это время ActionScript.
Создайте новый файл ActionScript (Cmd + N) и сохраните его как «Graph.as» в каталоге классов.

Шаг 5: Пакет
|
1
2
|
package
{
|
Ключевое слово package позволяет вам организовать ваш код в группы, которые могут быть импортированы другими скриптами. Рекомендуется называть их, начиная с буквы нижнего регистра, и использовать межстрочные буквы для следующих слов, например: myClasses .
В этом примере класс хранится в том же месте, что и файл Fla.
Шаг 6: Импорт необходимых классов
Это обязательные классы, более подробное описание каждого класса см. В справке Flash (F1).
|
1
2
3
4
5
6
7
8
9
|
import fl.transitions.Tween;
import fl.transitions.easing.Strong;
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.text.TextFieldAutoSize;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.events.Event;
|
Шаг 7: Объявление и расширение класса
Ключевое слово extends определяет класс, который является подклассом другого класса. Подкласс наследует все методы, свойства и функции, так что мы можем использовать их в нашем классе.
|
1
2
|
public class Graph extends Sprite
{
|
В этом примере класс Graph наследует все методы и свойства класса Sprite.
Шаг 8: Переменные
Это переменные, которые мы будем использовать, объяснено в комментариях.
|
1
2
3
4
5
6
7
|
private var graphContainer:Sprite = new Sprite();
private var xmlFile:XML;
private var urlLoader:URLLoader = new URLLoader();
private var totalBars:int;
private var tween:Tween;
private var tf:TextFormat = new TextFormat();
|
Шаг 9: Конструктор
Конструктор — это функция, которая запускается, когда объект создается из класса. Этот код выполняется первым, когда вы создаете экземпляр объекта или выполняете с использованием класса документа.
|
01
02
03
04
05
06
07
08
09
10
11
12
|
public function Graph():void
{
/* Text Format */
tf.color = 0x666666;
tf.size = 12;
tf.font = «Helvetica»;
createGraphContainer();
loadXML();
createBars();
}
|
Шаг 10: Контейнер графика
Эта функция создаст линии осей x и y графика, используя API рисования.
|
1
2
3
4
5
6
7
8
9
|
private function createGraphContainer():void
{
graphContainer.graphics.lineStyle(1, 0x9C9C9E);
graphContainer.graphics.moveTo(30, 30);
graphContainer.graphics.lineTo(30, 270);
graphContainer.graphics.lineTo(570, 270);
addChild(graphContainer);
}
|
Шаг 11: загрузить функцию XML
Это функция, которая обрабатывает загрузку файла XML. Мы указываем параметр по умолчанию, чтобы избежать вызова функции с использованием другого файла .as, вместо этого мы будем вызывать его из класса документа.
|
1
2
3
4
5
|
private function loadXML(file:String = «graph.xml»):void //Your xml data file
{
urlLoader.load(new URLRequest(file));
urlLoader.addEventListener(Event.COMPLETE, parseXML);
}
|
Шаг 12: Разбор XML
Эта функция устанавливает данные, загруженные в объект XML, и вызывает функции для создания графика с использованием этих данных.
|
1
2
3
4
5
6
7
8
|
private function parseXML(e:Event):void
{
xmlFile = new XML(e.target.data);
totalBars = xmlFile.children().length();
createBars();
displayNames();
}
|
Шаг 13: Создание баров
Этот код обрабатывает создание панели.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
private function createBars():void
{
for (var i:int = 0; i < totalBars; i++)//This for checks the number of bars in the xml
{
var bar:Sprite = new Sprite();
bar.graphics.beginFill(xmlFile.children()[i].@color);
bar.graphics.drawRect(0, 0, xmlFile.@width, xmlFile.children()[i].@value);
bar.graphics.endFill();
bar.x = 40 + (xmlFile.@width * i) + (10*i);
bar.y = 270 — bar.height;
var val:TextField = new TextField();
val.defaultTextFormat = tf;
val.autoSize = TextFieldAutoSize.RIGHT;
val.text = xmlFile.children()[i].
val.x = 55 + (xmlFile.@width * i) + (10*i);
val.y = 255 — bar.height;
tween = new Tween(bar,»height»,Strong.easeOut,0,bar.height,1,true);
addChild(bar);
addChild(val);
}
}
|
Шаг 14: Область информации
Информация о графике будет отображаться в правом верхнем углу, эта функция позаботится об этом.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
private function displayNames():void
{
for (var i:int = 0; i < totalBars; i++)
{
var color:Sprite = new Sprite();
var names:TextField = new TextField();
names.defaultTextFormat = tf;
names.autoSize = TextFieldAutoSize.LEFT;
names.text = xmlFile.children()[i].
/* Position */
names.x = 500;
names.y = 30 + (20 * i);
/* Color squares */
color.graphics.beginFill(xmlFile.children()[i].@color);
color.graphics.drawRect(0, 0, 10, 10);
color.graphics.endFill();
color.x = 490;
color.y = 31 + (20 * i);
addChild(names);
addChild(color);
}
}
|
Шаг 15: Класс документа
Вернитесь к файлу .Fla и в панели свойств добавьте «График» в поле «Класс», чтобы сделать этот класс документа.
Вывод
Протестируйте свой фильм и увидите, что ваш график появился на сцене.
Вы можете настраивать графики различными способами, используя файл XML, а также добавляя новые функции с помощью ActionScript. Попытайся!
Надеюсь, вам понравился этот урок, спасибо за чтение.

