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

Предоплата всего

Подписываем
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Предоплата всего
Подписываем
Лабораторные работы 52 Flash MX. Создание сценария для кадра
Создание сценария для кадра
Связав сценарий с некоторым ключевым кадром фильма, можно обеспечить автоматическую инициализацию тех или иных действий при достижении этого кадра.
Как правило, все кадры, которым назначены действия, стараются поместить в отдельном слое. Это облегчает тестирование и редактирование фильма.
Чтобы связать с кадром некоторый сценарий, необходимо:
Имейте в виду, что действия, назначенные кадру, в режиме редактирования не работают. Чтобы протестировать фильм, необходимо в меню Control выбрать команду Test Movie (или Test Scene).
В качестве примера рассмотрим назначение кадру действия goto, входящего в подраздел Movie Control илиTimeline Control . Результатом его выполнения является переход к заданному кадру или сцене. Переход к одному из предыдущих кадров фильма обеспечивает циклическое повторное воспроизведение соответствующего фрагмента фильма.
На самом деле действия goto как такового не существует, в ActionScript используются два действия, реализующие два варианта перехода на требуемый кадр или сцену: gotoAndPlay (Перейти и воспроизвести) и gotoAndStop (Перейти и остановить).
Для обоих вариантов перехода предусмотрены следующие параметры:
Пара переключателей gotoAndPlay (Перейти и воспроизвести) и gotoAndStop (Перейти и остановить) определяет операцию, выполняемую после перехода на заданную сцену или кадр: после перехода воспроизведение фильма либо продолжается (возобновляется), либо приостанавливается.
Основная команда, которая используется чаще всего - Stop. Для остановки всего фильма, чтобы передать управление пользователю.
Комментарии и метки кадров
Вы учились работать со слоями, я рассказала, как изменять их имена. Задание слою индивидуального имени очень помогает при работе, особенно если слоев очень много. Но имя может быть не только у слоя, но и у кадра, только называется оно - меткой. Кроме того, у кадра может быть и комментарий. Метки и комментарии тоже помогают при работе с проектом. Но если имена слоев необходимы создателю фильма для более простой ориентации между ними то, комментарии кадров помогают разобраться при сложном сценарии, а метки просто незаменимая вещь, когда Вы применяете ActionScript. Давайте научимся создавать метки и комментарии, а затем применять еще одно действие языка скриптов.
Что же такое комментарии и метки кадров:
Комментарии - описывают назначение ключевого кадра или фрагмента сценария, для лучшего понимания последующего действия. Необходимы, главным образом, для автора.
Метки - предназначены для удобства программирования и служат своеобразными точками вызова, т.е. идентификаторами кадра.
Поясню на примере: если, создавая свой фильм, Вы задали для одной из кнопок, или действию на ввод информации пользователем, переход на какой-то кадр, например 162, а затем отредактировали предыдущие кадры таким образом, что данное действие передвинулось, например на 173-й кадр, то Вам придется искать все места в скрипте где упоминался 162-й кадр. Программисты знают, что самый простой выход в данном случае - использование имени функции или подпрограммы. Метка, как раз и является своеобразным именем подпрограммы. Если в скрипте будет фигурировать имя метки, то где бы ни был кадр с данной меткой, Flash передаст управление именно на него.
И если справа от кадра будет достаточно свободного места, то вы увидите имя метки кадра после красного флажка. Хочу обратить Ваше внимание, на тот факт, что метки компилируются в рабочий файл. Поэтому, давайте меткам имена покороче, лучше из одного слова и на английском языке.
Ход работы:
Задание 1
Теперь назначим управление для кнопок.
В верхней части, как всегда, дополнительные настроечные параметры:
В выпадающем меню Scene, можно выбрать сцену перехода - текущую, предыдущую, следующую или сцену с собственным именем (о сценах в следующих темах).
Кроме сцены мы можем задать переход по:
Frame - кадру, в поле Number - введите номер кадра.
Label - метке, в выпадающем меню будет список установленных Вами меток.
Next Frame - следующему кадру.
Previous Frame - предыдущему кадру
И еще одна галочка Control (Переход и воспроизведение), которая меняет команду с "Go to and Stop" на "Go to and Play".
Окончательный вид скрипта:
on (release, keyPress "S") {
gotoAndStop (shar);
}
Для второй кнопки создайте аналогичным образом переход на метку "Куб" и реагирование на нажатие мыши и клавиши "С".
Запустите Ваш фильм. Он начал сразу проигрываться. Задайте команду stop на ключевых кадрах. В предыдущей главе было описано как это сделать.
Если все сделано правильно, то Вы увидите сменяющие друг друга фигуры шара и куба. При нажатии на одну из кнопок, на экране появится именно та фигура, на которую ведет управление с кнопки, нажатие на другую кнопку покажет другую фигуру.
Вы можете теперь реализовать вот такой пример (используя переход на следующий, предыдущий кадр, метки ...) знаний вам вполне хватит.
Задание 2
Импортируем фоновый рисунок. Откройте новый файл (File > New). Войдите в его настройки (Modify > Document) и задайте такие размеры сцены: 237px на 268px. Ваш фоновый рисунок должен быть этого же размера. Выберите рисунок, который хотите сделать фоном и импортируйте его в библиотеку (Select File > Import to Library). Откройте библиотеку (Window > Library), найдите свой рисунок, перетащите его на сцену. Слой, в котором находится рисунок, назовите background.
Создаем клип - точку. Создайте новый слой и назовите его dot. Нарисуйте красный круг инструментом «окружность» . Чтобы круг получился ровным, при рисовании удерживайте shift. Удалите внешнюю линию границы. Задайте кругу размер 2 на 2. Выберите круг и нажмите Modify > Convert to Symbol. В появившемся окне выберите Movie Clip, назовите клип dot_mc и нажмите ок.
Создаем клип - сердце. Создайте новый слой и назовите его heart. Нарисуйте или импортируйте рисунок сердца. Задайте сердцу размер 10 на 10. Выберите сердце и нажмите Modify > Convert to Symbol. В появившемся окне выберите Movie Clip, назовите клип heart_mc и нажмите ок.
Добавляем простой ActionScript код клипам. Выберите круг, и откройте панельactions. Скопируйте туда этот код, чтобы придать клипу случайное перемещение:
onClipEvent(enterFrame)
{
_alpha=random(100);
_x=_x=random(50);
_y=_y=random(50);
}
Проделайте то же самое с клипом сердце. Вместо 100 и 50 вы можете вписать другие числа. Поэкспериментируйте и проверьте, как это будет смотреться.
Скопируйте клип точку и клип сердце несколько раз и разместите копии в разных местах на сцене.
Сохраните файл и нажмите Ctrl+Enter, чтобы посмотреть результат.
Задание 3
Начнем с того, что создадим новый файл, размер сцены установим 550x100 и зададим Frame rate в 30 кадров в секунду. Нарисуем вертикальную линию, по высоте равную высоте клипа. Вы можете поместить ее на любом месте сцены, это не имеет для нас никакого значения.
Выделим эту линию и нажмем F8, чтобы перевести ее в movie clip. Имя клипа также не имеет никакого значения. Теперь у нас на сцене вместо линии появился movie clip, содержащий эту линию.
Выделим этот movie clip с нашей линией и откроем панель ActionScript, нажавF9. Вы должны убедится, что выделение стоит именно на муви-клипе, иначе у нас ничего не получится. Если все правильно, то смело вставляем в окно ActionScript следующий код:
onClipEvent (enterFrame) {
_x = random(551);
_alpha = random(101);
}
Все, ролик готов! Чтобы убедится в его работоспособности, идем Control > Test Movie, или просто нажимает Ctrl+Enter. Если все сделано правильно, то вы должны увидеть прыгающую с места на место линию, как на ролике в начале урока.
Первая строчка кода "onClipEven(enterFrame) {}" необходима, чтобы действие, описанное двумя строчками ниже, повторялось каждый раз, когда меняется кадр. Вобщем-то, кадр может быть всего один, тут не имеет значение их количество, действие будет выполнятся столько раз в секунду, сколько мы задали в Frame rate в самом начале урока, т.е. 30 раз в секунду бесконечное число секунд.
Вторая строчка "_x = random (551);" меняет значение горизонтальной координаты линии. Т.е. машина выбирает случайное число от 0 до 550 и присваевает его как координату нашей линии.
Если мы хотим изменять вертикальную координату, вместо _x стоит указать_y. Есть множество свойств объекта, которые могут изменяться, например:вертикальное положение_y, вертикальное растягивание _yscale,горизонтальное положение_x, горизонтальное растягивание _xscale,непрозрачность _alpha и поворот объекта _rotation. Советую вам поэксперементировать со всеми этими свойствами, например так:
onClipEvent (enterFrame) {
_x = random(434);
_y = random(50);
_xscale = random (20);
_alpha = random(50);
_rotation = random (44);
}
Попробуйте подставлять свои значения, добавлять или убирать свойства и посмотрите, что выйдет.
Задание 4
1) Создайте новый файл. Размер сцены значения не имеет (в примере 300x200 пикселей).
2) На главной сцене нарисуйте небольшой круг и сделайте его movie clip.
3) Чтобы это сделать, выберите нарисованный вами круг и нажмите F8. В появившемся окне выберите Movie clip, дайте ему имя (на ваше усмотрение), и нажмите OK.
Ничего сложного, правда? Теперь нам нужно применить экшены к этому клипу. Кликните по нему правой кнопкой мыши и выберите пункт «Actions»(действия). Откроется окно Actions.
Вставьте следующие экшены:
onClipEvent (load) {
_x = 0;
_y = 0;
speed = 5;
}
onClipEvent (mouseDown) {
endX = _root._xmouse;
endY = _root._ymouse;
}
onClipEvent (enterFrame) {
_x += (endX-_x)/speed;
_y += (endY-_y)/speed;
}
Теперь вы можете запустить ролик, нажав комбинацию клавиш CTRL+Enter.
Во-первых, в объяснении нуждается функция onClipEvent(load):
onClipEvent (load) {
_x = 0;
_y = 0;
speed = 5;
}
Эта функция перемещает клип в заданные координаты x и y. Точка (0,0) это верхний правый угол сцены.
Она также задаёт скорость эффекта (speed = 5;). Чем меньше скорость, тем быстрее эффект.
Далее рассмотрим предназначение функции onClipEvent(mouseDown):
onClipEvent (mouseDown) {
endX = _root._xmouse;
endY = _root._ymouse;
}
Она задает конечное расположение вашего клипа. Когда вы кликаете по сцене, она определят место, в которое будет перемещаться ваш клип.
И последнее, что нам осталось это функция onClipEvent(enterFrame):
onClipEvent (enterFrame) {
_x += (endX-_x)/speed;
_y += (endY-_y)/speed;
}
Это цикл, который берет текущие (x,y) координаты клипа и вычитает их из endX и endY переменных (которые вы задаете, когда кликаете мышью по сцене). Это значение становится все меньшим, т.к. клип приближается к выбранной точке и каждый раз делится на скорость. Это заставляет клип двигаться быстрее, когда он далеко от точки и медленнее, когда он к ней приближается.
Задание 5
Нарисуйте фон (циферблат) для ваших будущих часов. Вы можете сделать это во флэше, либо нарисовать в другой программе (Photoshop, Illustrator или в других графических редакторах), а затем импортировать во Flash.
Создайте 5 слоёв и назовите их - interface, sec, min, hour и actions.
Вставьте фон (циферблат), который вы нарисовали в первый кадр слояinterface.
В первом кадре слоя sec нарисуйте линию. Выберите её и нажмите F8. Назовите её sec_mc, тип выберите Movie clip. Там, где написано registration, обозначьте нижний средний квадрат. Нажмите OK.
1) Разместите sec_mc (он будет секундной стрелкой) по центру циферблата. Назовете его «sec» в панели Instance.
2) Перетащите sec_mc из библиотеки в первый кадр слоя min (он будет минутной стрелкой). Увеличьте его длину примерно на 3 пикселя. Разместите его по центру циферблата. Назовете его «min» в панели Instance.
3) Перетащите sec_mc из библиотеки в первый кадр слоя hour (он будет часовой стрелкой). Увеличьте его длину примерно на 5 пикселей. Разместите его по центру циферблата. Назовете его «hour» в панели Instance.
4) Скопируйте этот код в экшены первого кадра слоя actions:
time=new Date(); // объект time
seconds = time.getSeconds()
minutes = time.getMinutes()
hours = time.getHours()
hours = hours + (minutes/60);
seconds = seconds*6; // считаем секунды
minutes = minutes*6; // считаем минуты
hours = hours*30; // считаем часы
sec._rotation=seconds; // задаём значение параметра rotation
min._rotation=minutes; // задаём значение параметра rotation
hour._rotation=hours; // задаём значение параметра rotation
Во всех слоях создайте по дополнительному кадру (F5). Нажмите Ctrl+Enter, чтобы запустить ролик.
Создайте новый документ во флэш. Начните с рисования стрелок. Учтите, что минутная стрелка должна быть не выше, чем половина высоты и ширины сцены (чтобы она могла поворачиваться).
Выберите минутную стрелку, сделайте её MovieClip нажатием клавиши F8 и назовите её MinuteHand. То же самое проделайте с часовой стрелкой и назовите её HourHand. Каждой стрелке нужно также присвоить соответствующее instance name (панель properties). Создайте новый слой и переместите в него одну из стрелок. Проверьте появились ли обе стрелки в библиотеке.
Теперь нужно определить центр для слипов со стрелками. Для этого начните редактирование клипа (двойной щелчок по нему) и установите изображение стрелки так, чтобы центр находился в этом месте:
Вернитесь к основной сцене и выровняйте обе стрелке по центру. Теперь нужно добавить экшен, который будет загружать значения часов и минут из asp файла. Создайте новый слой, назовите его actions, откройте панельactions (правой кнопкой по кадру > actions) и вставьте следующий код:
Создайте еще один слой и нарисуйте в нем циферблат ваших часов. Добавьте второй кадр во всех слоях (выбираем кадр > F5). В слое actions второй кадр будет ключевым (выбираем кадр > F6). В него нужно вставить этот код:
Set Variable: "h" = Hour
Set Variable: "m" = Minute
If (h > 12)
Set Variable: "h" = h - 12
End If
Set Variable: "HourAngle" = h*30 + m/2
Set Variable: "MinuteAngle" = m*6
Set Property ("HourHandMovie", Rotation) = HourAngle
Set Property ("MinuteHandMovie", Rotation) = MinuteAngle
Этот код переводит значения часов и минут в углы в градусах и меняет свойство Rotation клипов стрелок в соответствии с полученными углами.
Вот структура файла clock.asp, который предоставляет значения часов и минут нашим часам.
<%@Language = "VBScript"%>
<%
Option Explicit
Response.Buffer = True
Response.Expires = -1000
Response.Write "Hour=" & Hour(Now) & "&Minute=" & Minute(Now)
Response.Flush
%>