Рубрика | AS3

Функции в AS3

Опубликовано: 30 Январь 2010. Автор: kFrame

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

Приступим. Функция  - блок инструкций, предназначенный для выполнения некоторой задачи. Под инструкциями нужно понимать как математические вычисления, так и любые другие программно-управляемые действия, от изменения координат или прозрачности графического объекта до обмена информацией с удаленным компьютером. Если функции входят в состав класса, то они называются методами или функциями-членами.

Любая функция до того как она будет использована должна быть описана. Давайте разберемся в основных составляющих описания функции. Пример 1 - функция поиска разницы двух чисел:

function findDifference(x:Number,y:Number):Number
{
var result:Number = x - y;
return result;
}

function - служебное слово которое сообщает компилятору, что мы создаем функцию и дальше будет идти имя функции, в нашем случае это findDifference. Внутри скобок идет упорядоченный список параметров, их еще называют входящими аргументами или просто аргументами. Также указывается тип аргументов - у нас оба аргумента имеют тип Number т.е. рациональное число. после скобок через двоеточие указывается тип функции, иначе говоря тип информации которая возвращается в результате выполнения данной функции. Так как наша функция принимает два числа и предназначена для нахождения их разницы, то логично что мы указали тип возвращаемых данных тоже Number. Все что находится между фигурных скобок называется телом функции. Оно (тело) состоит из инструкций выполнения и инструкции возврата. Инструкция выполнения у нас одна единственная - объявляем переменную result и сразу присваиваем ей значение разницы входящих аргументов. Инструкция возврата это служебное слово return, после которого указывается возвращаемая величина. Обратите внимание что тип возвращаемой величины это и есть тип функции. Таким образом описав функцию, мы сможем в другом месте программы записать например

var A:Number = 120;
var B:Number = 18;
var C:Number;
C=findDifference(A,B);

значение A воспримется как переменная x, значение B - как переменная y, а переменной С присвоится результат выполнения функции, т.е. разница чисел A и B. Если, как в случае и с нашей функцией, активных вычислений или преобразований мало, или же их вообще нет (да, и такое бывает - например спецфункции геттеры, с которыми еще предстоит познакомиться), то выполняемые инструкции можно объединить с возвращаемой. Функцию findDifference можно было переписать и так:

function findDifference(x:Number,y:Number):Number
{
return x - y;
}

т.е. минуя создание переменной.
И так мы разобрали пример, теперь давайте посмотрим какими функции могут быть еще. В этом примере мы делали математические вычисления, но бывают функции которые ничего не вычисляют, к примеру функция которая нарисует какую-то фигуру. В случае когда функция не возвращает никакого значения ее тип указывают void, при этом отпадает необходимость в инструкции возврата - ее можно не указывать вообще или же указывать в таком виде

 return;

т.е. без возвращаемой величины. К стати, вы заметили что мы не указывали тип конструктора класса? Какой тип это был?

Разберемся теперь с аргументами.  Они могут как отсутствовать так и присутствовать. К примеру, метод clear() класса flash.display.Graphics , предназначенный для стирания всего нарисованного программно, не имеет аргументов, так же как и конструктор основного класса, во всех наших уроках. Когда аргументы присутствуют они могут иметь значения по умолчанию - в уроке AS3 основы программной анимации мы рассматривали параметр useSeconds, который указывал на использование секунд или миллисекунд, и мы говорили что по умолчанию этот параметр имеет значение false. При описании функции указание значения по умолчанию выглядит следующим образом:

 function testTrace(A:uint=12):void
{
trace(A);
}

Так если мы вызовем эту функцию вот так testTrace(); то в выводе получим число 12, а если вот так testTrace(150); то 150. Вроде не очень сложно.
Рассмотрим еще один момент - функции с неопределенным количеством аргументов.

function traceArguments(s:String, ... ar):void
{
     trace("s="+s+", ar="+ar);
}
traceArguments("test", 1,7,"check");
//выведется следующее: s=test, ar=1,7,check

Первый аргументs воспринимается строкой, как он и указан,а аргумент ar воспринимается как набор аргументов, количество которых не задано. Кто знаком с массивами, можете рассматривать ar именно как массив.

Подведем маленький итог. Функция - блок инструкций, который выполняет некоторую задачу. Она может возвращать или не возвращать результат своей работы. Функция может иметь или не иметь аргументов. Аргументы могут иметь значение по умолчанию, иногда количество аргументов не известно.

На сегодня все - спасибо за внимание.

Bookmark and Share

Ваш отзыв

Advertise Here
Advertise Here