Возврат ActionScript или возврат данных функцией
На этом уроке ActionScript мы рассмотрим 2 вопроса:
- Возврат ActionScript или возврат данных функцией
- Дополнительная информация
Как было показано в уроке о передаче параметров ActionScript функции, переменные, которые находятся внутри функции ActionScript в языке программирования являются локальными для неё, т.е. они не доступны для внешнего кода, относительно этой функции. Однако, очень часто у Вас будет возникать необходимость в использовании результатов работы функции внешним кодом.
Чтобы решить эту задачу нужно воспользоваться способностью функции возвращать данные (возврат ActionScript). Сделать это просто: в самой последней строке функции запишите ключевое слово return (вернуть), затем, после пробела напишите переменную (var), значение которой и будет возвращаться функцией.
Для того чтобы использовать функцию, возвращающую данные (возврат ActionScript) нужно вызывать её в виде значения переменной (вызов функции ActionScript). Эта переменная будет содержать возвращаемое функцией значение, которое Вы можете использовать также как и значение любой другой переменной в Вашем скрипте. Например, если функция возвращает количество проданного за сегодняшний день товара, то она должна быть записана следующим образом:
var numItems:Number = getNumItems();
Значения, возвращаемые функцией (возврат ActionScript), могут принадлежать к любому типу данных ActionScript, включая как простые (String, Number, Boolean), так и сложные (Object, ActionScript Array или пользовательские классы, созданные Вами). Тип возвращаемых данных должен быть обязательно указан сразу после закрывающей круглой скобки в строке с аргументами. Обязательно проверьте соответствие типа данных для возвращаемого значения и того, что Вы получаете на самом деле. Если будет несоответствие, то во время воспроизведения скрипта возникнет ошибка!
Возврат данных функцией (возврат Actionscript)
Откройте панель Actions.
Запишите функцию, например:
function addNums(numToAdd1:Number, numToAdd2:Number)
После закрывающей круглой скобки поставьте двоеточие и запишите тот тип данных, который соответствует возвращаемому значению:
function addNums(numToAdd1:Number, numToAdd2:Number):Number
Далее поставьте открывающую фигурную скобку, нажмите два раза Enter и закройте фигурные скобки:
function addNums(numToAdd1:Number, numToAdd2:Number):Number { }
Между фигурными скобками запишите инструкции, которые должна выполнить функция:
function addNums(numToAdd1:Number, numToAdd2:Number):Number { var sum:Number = numToAdd1 + numToAdd2; }
Зипишите ключевое слово return и через пробел имя переменной, значение которой должна возвращать функция:
function addNums(numToAdd1:Number, numToAdd2:Number):Number { var sum:Number = numToAdd1 + numToAdd2; return sum; }
Сразу после функции запишите переменные, которые будут передаваться в качестве аргументов этой функции:
var num1:Number = 12; var num2:Number = 24;
Завершите Ваш код декларацией переменной, которая будет содержать конечный результат работы всего кода:
var total:Number = addNums(num1, num2);
Проверьте результат, используя метод trace Actionscript:
trace(total);
Нажмите клавиши Ctrl + Enter. Запустится Flash Player для просмотра результата возврата ActionScript.
В итоге весь код в редакторе скрипта панели Actions должен выглядеть так:
В окне Output появится итоговый результат работы функции.
Дополнительная информация
Приведенный выше код можно было бы записать и так:
var sum:Number = numToAdd1 + numToAdd2;
Однако, добавление чисел отдельными строками кода делает всю запись в целом более читабельной и легко редактируемой.
Нельзя записывать что-либо ещё после инструкции со словом return кроме закрывающей фигурной скобки, т.к. подобные действия вызовут ошибку во время воспроизведения flash-ролика. Существует, правда, одно исключение из этого правила: это можно делать если ключевое слово return будет находится внутри условного выражения if-else, которое будет рассмотрено в уроке «Использование условных операторов else и else if». Хотя и там мы увидим, что, по большому счету, это правило особенно и не нарушается.