Гистограмма или гистограмма — это диаграмма с прямоугольными столбцами, длина которых пропорциональна значениям, которые они представляют. Они обычно используются для сравнения двух или более значений, которые были взяты во времени или при различных условиях, обычно в небольших наборах данных.
В этом уроке мы создадим генератор гистограмм с использованием 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. Попытайся!
Надеюсь, вам понравился этот урок, спасибо за чтение.