Автор работы: Пользователь скрыл имя, 07 Декабря 2011 в 20:44, курс лекций
Технология Flash основана на использовании векторной графики в формате Shockwave Flash (SWF). Хотя это далеко не первый векторный формат, создателям SWF удалось найти наиболее удачное сочетание между изобразительными возможностями графики, инструментальными средствами для работы с ней, и механизмом включения результата в Web-страницы. Дополнительным преимуществом SWF является его переносимость, то есть этот формат может использоваться на любой аппаратно-программной платформе (в частности, на компьютерах Macintosh, работающих под управлением операционной системы MacOS, и на компьютерах IBM с ОС Windows). И еще одна особенность SWF: созданные на его основе изображения не только могут быть анимированы, но также дополнены интерактивными элементами и звуковым сопровождением.
1. ActionScript позволяет вам объединить несколько выражений в одно, называемое блоком выражений. Для этого нужный участок кода заключается в фигурные скобки { и }.
а = 11;
{
b = "12";
с = а - b;
}
Как
правило, блоки не используются сами по
себе. Чаще всего они входят в состав других
сложных выражений.
2. Условное выражение позволяет вам, в зависимости от выполнения или невыполнения какого-либо условия, выполнить один из двух фрагментов кода. Существует также другой, вырожденный вариант условного выражения, выполняющий фрагмент кода при выполнении условия и не выполняющий его, если условие не выполнено.
Условное выражение имеет следующий формат:
if (<Условие>) . . .
Блок "то"
else
Блок
"иначе"
Вырожденный формат его выглядит так:
if (<Условие>) . . .
Блок "то"
т.
е. без блока else.
Условие может быть довольно сложным.
i f (х == 1 && у > 10)
f = 3;
else
f
= 33;
Здесь мы использовали сложное условие, возвращающее true в случае, если значение переменной х равно единице. И значение переменной у больше десяти. Достоинство этого оператора в том, что он может быть частью выражения. f = (х = = 1 && у > 10) ? 3 : 33;
Фактически
мы записали предыдущий пример, но в виде
обычного арифметического выражения..
Недостаток же оператора ? в том,
что с его помощью можно записать только
самые простые условные выражения.
3. Выражение выбора — это несколько условных выражений, объединенных в одно. Его формат таков:
switch (<Выражение>) {
case Оначение 1> :
<Блок 1>
[break; ]
[case Оначение 2> :
<Блок 2>
[break;]]
. .. Другие секции case
[default :
<Блок, исполняемый для остальных значений>]
}
В
результате вычисления выражения получается
результат, который последовательно сравнивается
со значением 1, значением 2 и т. д. Если
такое сравнение увенчалось успехом, выполняется
соответствующий блок кода (блок 1, блок
2 и т. п.). Если же ни одно сравнение не увенчалось
успехом, выполняется блок кода, находящийся
в секции default, если, конечно, она есть.
Если одна из секций не имеет действия
break, то выполнение кода не прервется на
этой секции, а продолжится дальше. Так,
если результат выражения совпал с условием
1, и была выполнена секция 1, не содержащая
действия break, будут выполнены также секция
2, секция 3 и все последующие вплоть до
секции default.
4. Циклы — это особые выражения, позволяющие выполнить один и тот же блок кода несколько раз. Выполнение кода прерывается по наступлению некоего условия. ActionScript предлагает программистам несколько разновидностей циклов.
1) Цикл со счетчиком. Цикл со счетчиком используется, если какой-то код нужно выполнить определенное число раз. Это наиболее часто используемый вид циклов. Для подсчета, сколько раз был выполнен этот фрагмент кода, используется переменная, называемая счетчиком цикла. Перед каждым выполнением блока кода выполняется проверка, достигло ли значение счетчика предельного значения, и, если не достигло, выполняется очередное повторение. А блок кода, который выполняется в цикле, называется телом цикла.
for (<Выражение инициализаций; <Условие>; <Приращение счетчика>) Тело цикла
2) Цикл с постусловием. Цикл с постусловием во многом похож на цикл со счетчиком, а именно, тем, что он выполняется до тех пор, пока остается истинным условие цикла. Причем условие проверяется не до, а после выполнения тела цикла, отчего цикл с постусловием и получил свое название. Поэтому такой цикл выполнится хотя бы один раз, даже если условие с самого начала ложно. Форма цикла с постусловием:
do
Тело цикла
while (<Условие>);
3)
Цикл с предусловием.
Цикл с предусловием
отличается от цикла с постусловием тем,
что условие проверяется перед выполнением
тела цикла. Так что, если оно (условие)
изначально ложно, цикл не выполнится
ни разу. while (<Условие>) Тело цикла
5.
Иногда бывает нужно прервать выполнение
цикла. Для этого JavaScript предоставляет
программистам действия break и continue. Действие
break позволяет прервать
выполнение цикла и перейти к следующему
за ним выражению.
while (a < 100) {
а = а * i + 2;
if (a > 50) break;
i = ++i;
}
В этом примере выполнение цикла прерывается если значение переменной а превысит 50. Действие continue позволяет перезапустить цикл, т. е. оставить невыполненными все последующие команды, входящие в тело цикла, и вернуться к тому месту, где проверяется условие цикла.
while (a < 100) {
i=++i;
if (i > 9 && i < 21) continue;
a = a * i + 2;
}
Здесь
мы пропускаем выражение вычисления а
для всех значений i
от 10 до 20.
6. Некоторые сценарии можно "привязать" к различным событиям, происходящим в системе. Такими событиями могут быть, например, щелчок по кнопке или окончание загрузки фильма. И, стало быть, сценарии, привязанные к этим событиям, будут исполняться после щелчка по кнопке и полной загрузки фильма. Сценарий, привязанный к событию, называется обработчиком этого события. Такие обработчики могут быть привязаны только к двум типам элементов фильма: вложенным клипам и кнопкам. И, в зависимости от элемента, к которому привязывается обработчик, для их создания используются два разных действия. Для привязки обработчика к вложенному клипу используется уже знакомое вам действие onClipEvent:
onClipEvent(<Событие>) {
Код обработчика
}
Например:
onClipEvent(mouseDown) {
stop();
}
Этот сценарий обрабатывает щелчок мыши по вложенному клипу и в ответ на него останавливает проигрывание этого клипа. Для привязки обработчика к кнопке вы должны использовать немного другой синтаксис, с использованием действия on:
оn(<Событие>) {
Код обработчика
}
Пример обработчика события, возникающего при нажатии кнопки:
on(press) {
stopAHSounds () ;
}
Этот
сценарий отключает все звуковое сопровождение
фильма.
Лекция №12.
Тема: Функции ActionScript.
Цель: Познакомиться с понятием «функция» в ActionScript, способами создания и вызова функций, научиться создавать массивы.
Содержание:
1. Создание функций.
2. Вызов функций.
3. Рекурсия.
4. Встроенные функции ActionScript.
5. Массивы.
1. Функция — это особым образом написанный и оформленный фрагмент кода ActionScript, который можно вызвать из любого места любого сценария. Фактически функция — это повторно используемый участок кода, который, будучи написанным один раз, может быть вызван где угодно, кем угодно и сколько угодно раз. Каждая функция, кроме того, должна иметь уникальное имя, по которому к ней можно будет обратиться. Функция также может принимать один или несколько аргументов или параметров и возвращать результат, который можно использовать в программе.
Прежде, чем функция будет использована где-то в сценарии, ее нужно объявить. Объявление функции выполняется с помощью действия function.
function
<Имя>([<Список аргументов, разделенных
запятыми>]) Тело функции
Имя функции должно быть уникально в пределах области видимости. Для имен функций действуют те же правила, что и для имен переменных. Cписок аргументов представляет собой набор переменных, в которые при вызове функций будут помещены нужные аргументы. Они будут использованы только внутри тела функции. Это так называемые формальные аргументы функции. Список аргументов функции помещается в круглые скобки, а аргументы отделяются друг от друга запятыми. Если же функция не требует аргументов, то скобки при этом все равно должны оставаться. В пределах тела функции, как вы уже поняли, над аргументами выполняются некоторые действия и, возможно, вырабатывается результат. Чтобы вернуть его из функции в место вызова, используется действие return:
return
{Переменная или выражение};
Здесь переменная должна содержать возвращаемое значение, а выражение должно его вычислять. Объявленные функции видны только в пределах текущего клипа (функция уровня клипа). нужно сделать функцию доступной во всем фильме (глобальной), используется модификатор _giobal:
function
_global.glDivide(a, b) { return a / b; }
2. После того, как вы объявили функцию, вы можете вызвать ее из любого места кода в пределах области видимости. Для этого используется следующий формат:
<Имя
функции>([<Список фактических
аргументов, разделенных запятыми>])
Здесь указывается имя нужной функции, и в круглых скобках перечисляются ФАКТИЧЕСКИЕ аргументы, над которыми нужно выполнить соответствующие действия. Функция вернет результат, который можно присвоить переменной или использовать в сложном выражении.
Когда функция вызывается просто указанием ее имени, то будет вызвана функция уровня клипа. Если же такой функции не будет найдено, Flash вызовет глобальную функцию с таким именем. Если нужно вызвать функцию, находящуюся в другом клипе, необходимо указать имя этого клипа перед именем функции, разделив их точкой: someClip.initVars(1, 2, 3, 6);
А теперь небольшой фокус:
var varFunc;
function sampleFunc(a, b) {
varFunc
= sampleFunc;
ActionScript
допускает присвоение функции переменной.
Такая переменная будет иметь тип функции,
и оператор typeof вернет для нее строку "function".
To же самое значение оператор typeof вернет,
если ему передать само имя функции.
3. Функции могут также вызывать сами себя. Такой прием программирования иногда бывает очень полезен и называется рекурсией или рекурсивным вызовом. В обычных условиях, если функция вызовет сама себя, то она войдет в бесконечный цикл вызовов, из которого нет выхода (так называемая бесконечная рекурсия). В конце концов, это завершится аварийной остановкой Flash, а то и крахом всей операционной системы. Поэтому функция, предназначенная для рекурсивного вызова, должна предусматривать возможность выхода из этого цикла вызовов. Стандартного способа сделать это не существует, поэтому решение для каждого конкретного случая нужно искать особо.