| ActionScript 3.0. Урок 5. Функции |
|---|
| 16.09.2008 г. | |
|
Функции определяют повторяющиеся участки кода, или обычные операции в ActionScript. Создавая функцию, вы можете повторять одну и ту же операцию множество раз без необходимости заново писать один и тот же код каждый раз, когда вы хотите ее использовать. Вместо этого, все, что вам нужно сделать - это вызвать функцию, используя ее имя. В ActionScript функции определяются двумя способами. Вы можете создать именованную Функцию, используя форму function [functionName] ([parameters]) { [code] }, или можете определить безымянную функцию, используя var [functionName] = function ([parameters]) { [code] }. Именованные функции создают определения функции или метода, в то время как неименованные функции содержат переменные, которые ссылаются на «свободно меняющееся» определение функции.// Named function function doubleNumber(num) { return num*2; } // defined within the variable doubleNumber var doubleNumber = function(num) { return num*2; } В приведенном выше примере создается функция с именем doubleNumber, которая принимает единственное числовое значение и возвращает это значение, умноженное на два. Для использования функции нужно вызвать, используя круглые скобки (()).
var x:Number = 10; trace(doubleNumber(x)); // traces 20 Как и в случае с переменными, именованные функции не могут быть определены более одного раза для любой данной временной шкалы в ActionScript 3. Неименованные функции по прошествии времени могут ссылаться на множество функций, но не могут быть переопределены с помощью var, так как по существу они являются переменными. ActionScript 2 позволял изменять любое определение функции в любой момент. В ActionScript 3 можно менять только определение неименованных функций. При назначении функциям типов, определяйте информацию о типах как для параметров в списке (разделенный запятой список значений, с помощью которых поддерживается функция), так и для возвращаемого значения, или значения, которое поддерживается функцией после запуска. При использовании определения неименованной функции, переменной, которой назначается функция, также будет присвоен тип Function (функция). // Named function function doubleNumber(num:Number):Number { return num*2; } var doubleNumber:Function = function(num:Number):Number { return num*2; } Если функция не возвращает значения, тогда ее возвращаемый тип должен быть void. Когда запускается функция с типом void, или если функция просто не может вернуть значение с помощью оператора return, то ее возвращаемое значение становится неопределенным. function returnsNothing():void { // do nothing } trace(returnsNothing()); // traces undefined Названная выше функция returnsNothing не только ничего не возвращает, но также и не принимает никаких значений – у нее нет списка параметров. Если вы пытаетесь ввести значения в функцию, когда она не имеет списка параметров, определенного для нее в ActionScript 3, вы получите сообщение об ошибке. returnsNothing(3); // Error: Incorrect number of arguments В ActionScript 2, тип Void использовался в качестве списка параметров при определении функции, чтобы показать отсутствие параметров. В ActionScript 3 вы просто оставляете список пустым. Использование типа Void в списке параметров в ActionScript 3 фактически заставит Flash думать, что переменная, названная Void, определена для списка параметров этой функции.
Примечание: параметры в сопоставлении с аргументами С помощью ActionScript 3 вы теперь также можете определять для своих функций значения по умолчанию. // Here, message parameter is optional function usesDefault(message:String = "hello"):void { trace(message); } usesDefault("test"); // traces "test" usesDefault(); // traces "hello" Используя значения по умолчанию, вы не только получаете возможность назначить значения для параметров, не используемых процедурой вызова функции, но также они позволяют вам определить функции с дополнительными параметрами, или параметрами, которые не нужно использовать. Параметры, у которых нет значений по умолчанию, должны предоставляться при вызове функции в ActionScript 3. В связи с этим, все дополнительные параметры должны быть определены в конце списка параметров. Ситуация, когда требуемый параметр определен после дополнительного параметра, недопустима. // Error: Required parameters are not // permitted after optional parameters function usesDefault(message:String = "hello", num:Number):void { // code } // least 1 argument, accepts 2 at max function usesDefault(num:Number, message:String = "hello"):void { // code } Как быть, если вы захотите позволить вызов функции с любым числом аргументов? В ActionScript 2 вы могли сделать это, просто опустив любой список параметров и сославшись на аргументы с использованием объекта arguments в функции. В ActionScript 3 отсутствие списка параметров означает, что функция не может быть вызвана с любыми аргументами. Вместо этого, вам следует использовать новый тип параметра, известный как …(rest). Этот параметр идет в конце вашего списка параметров (или он может представлять ваш полный список параметров) и показывает, что любое число аргументов может использоваться при вызове функции. Параметр …(rest) записывается как …argumentsArrayName, где argumentsArrayName – это имя массива, который будет содержать прошедшие аргументы. // Using the ...(rest) parameter function passAnything(...statements):void { trace(statements.length +": "+ statements); } passAnything(); // traces 0: passAnything(1); // traces 1: 1 passAnything("a", true, 0); // traces 3: a,true,0 Примечание: доступ к caller и callee |
|
| Поиск похожих: ActionScript action script уроки tutorials Flash флэш бесплатно функции | |
| « Пред. | След. » |
|---|