Программируем на Actionscript 3.0


Всем привет! К сожалению не получается пока публиковать статьи так часто, как хотелось бы, буду стараться делать это почаще. Сегодня хочу рассмотреть основы языка Actionscript 3.0, базовые приемы и принципы и специфику.

В основе базы языка Actonscript 3.0 лежит спецификация Ecmascript 4. Синтаксис очень похож на Javascript, содержит конструкции, подобные языку Java. Если кто-то знаком с вышеуказанными языками, им будет еще легче в освоении Actonscript 3.0. Подробнее можно почитать  тут.

Специфика среды Flash (как и некоторых других) заключается в разделении вывода текстовой информации и графической, причем разделение уже сделано, и нам ничего не нужно с этим делать. Поясню: у нас имеется консоль и сцена. Чтобы вывести что-то, нам достаточно написать:

trace(<наша фраза, переменная и т. д.>);

чтобы создать клип, нам нужно будет создать его, а затем добавить его на сцену:

var <переменная> = new <конструктор класса>();

addChild(<переменная>);

Как создавать графические объекты, мы разберем попозже, когда научимся основам языка. А с выводом начнем знакомство прямо сейчас. Команда trace - не просто вывод, а вывод отладочный! Это значит, что в готовом swf мы его не увидим, он виден только в консоли среды разработки Flash. Давайте, что-нибудь выведем для начала, например: "Hello world, I'am Actionscript programmer!!!". Для чего напишем в первом кадре:

stop();
trace("Hello world, I'am Actionscript programmer!!!");

Если у кого возникают вопросы, где писать код, почитайте этот урок.

Запустим среду и увидим:

На вкладке output наша фраза. Вообще, вывод с использованием команды trace -по большей части - отладочный и очень помогает в поиске ошибок. Теперь немного усложним задачу и напишем программу для решения квадратных уравнений. Но писать будем не просто так, а немного познакомимся с подходом TDD. Подробно можете почитать тут, а применение концепции на сайте моего коллеги. В кратце поясню идею TDD (Test-Driving Development или разработка через тестирование). Идея подхода заключается в написании участков программы с последующим их тестированием, что позволяет сразу находить большую часть ошибок. Итак, приступим, но для начала немного познакомимся с типами данных.

Базовые типы данных:

Тип Описание
Boolean Логическая величина, может принимать значения «true» или «false».
int целочисленное 32-битное числовое значение в диапазоне от −231 до 231–1.
uint целочисленное 32-битное числовое значение в диапазоне от 0 до 232–1.
Number дробное 64-битное числовое значение в диапазоне от −253 до 253–1.
Null ноль. Ссылка на пустоту.
String Строчка из 16-битных символов. Используется кодировка UTF-16.
void тип данных с одним значением — undefined. Используется, если программист хочет указать тип функции как «невозвращаемый».

Сложные типы данных:

Тип Описание
Object Объект. Ключевой класс ООП. Является основой всех классов AS3.
Array Массив данных нестрогой типизации. Может принимать любые значения, например: ['a', 5, new TextField()]
Vector Массив данных строгой типизации. Например массив Vector.<String> может содержать только строковые данные ['a','b',' ']
Date Класс, содержащий сведения о дате/времени.
Error Класс, содержащий ошибки.
Function Основной класс. Примером является любой метод AS3.
RegExp Регулярные выражения
XML XML-объект, базирующийся на E4X (стандарт ECMA-357)
XMLList Array-базирущийся объект для поиска контента в XML-классе.

Теперь мы узнали, типы данных и с чистой совестью можем приступить к разработке. Да простят меня адепты ООП (я и сам такой), но пока мы не рассмотрели классы, я буду использовать функцию для решения квадратного уравнения.
Для начала напишем заглушку для функции и вызовем функцию:

stop();
function decideEquation(a,b,c){
	trace('done!');
}
decideEquation(2,3,4);

Запускаем и проверяем. На вкладке output должно появиться "done!". Значит функция работает и вызываем мы ее правильно. Это уже первый шаг к методу TDD - мы немного написали и сразу проверили. Функция для решения уравнения готова, теперь вспомним немного теории:

Квадратное уравнение - это уравнение вида ax2 + bx + c = 0, где a, b и c - числа, а x - искомое неизвестное при котором левая часть уравнения будет равна правой.

Для поиска решений сначала находят дискриминант по формуле: D=b2  - 4ac.

Далее проверяем:

D>0 - 2 корня, вычисляемых по формуле:

D=0 - 1 корень (или как считают некоторые - 2 равных корня), который находим так:

 

D<0 - вещественных корней нет, поэтому корни комплексные, вдаваться в подробности не будем, будем как в школе считать, что корней нет.

Давайте выведем дискриминант в нашей функции и выведем его:

stop();
function decideEquation(a,b,c){
	var d = Math.pow(b,2)-4*a*c;
	trace(d);
}
decideEquation(2,4,1);

В приведенном примере дискриминант больше, поэтому будет два корня, но нам необходимо обработать все три случая, поэтому напишем:

stop();
function decideEquation(a,b,c){
	var d = Math.pow(b,2)-4*a*c;
	if (d>0){
		trace((-b+Math.sqrt(d))/(2*a));
		trace((-b-Math.sqrt(d))/(2*a));
	}
	else if(d==0){
		trace(-b/(2*a));
	}
	else{
		trace("equation haven't root");
	}
}
decideEquation(2,4,5);

Все! Вывод решения будет зависеть от переданных коэффициентов. Сразу скажу, что это учебный пример и укажу на ошибки. Ошибка в выводе внутри функции, а лучше чтобы функция вернула результат, а мы с ним потом работали. Для использования такого подхода необходимо будет рассмотреть массивы и циклы, чем займемся в следующих уроках, а пока разберм то, что написали тут:

function <имя функции> (<параметры>)

объявление функции, к которой мы сможем обращаться <имя функции> (<параметры>);

var <имя переменной>

объявление переменной, к которой мы сможем обращаться <имя переменной>;

if (<условие>){<действия>}else{<действия>}

условный оператор, где при выполнении (не выполнении) определенного условия будут выполнены необходимые операции.

На этом закончу сегодняшний урок, а далее рассмотрим, что такое сложные типы данных, как функция может возвращать значения, рассмотрим циклы, а потом рассмотрим ООП.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *