Программа элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий


Скачать 331.52 Kb.
НазваниеПрограмма элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий
страница7/7
ТипПрограмма
1   2   3   4   5   6   7

9. Трехкадровые циклы. Программная анимация.


Программное изменение свойств объектов позволяет создавать программную анимацию. В отличие от стандартной анимации, которую можно создать в программе Macromedia Flash, программной анимацией можно управлять по ходу ролика.

Казалось бы, достаточно циклично изменять свойства объекта, например координату x и объект начнет движение, но это не так. Дело в том, что во Flash вначале выполняется программный код, а лишь потом происходит изменение, перерисовка экрана. Поэтому объект из начальной точки сразу перенесется в конечную, плавного движения не получится. Преодоление этого противоречия лежит в использовании трехкадровых циклов.

Их идея в следующем:

В первом ключевом кадре задаются начальные константы, начальное положение объекта.

Во втором ключевом кадре происходит изменение свойства объекта на какую-то заданную величину.

В третьем ключевом кадре находится всего одна команда перейти на второй кадр.

Не смотря на то, что явно цикл не задан, будет происходить циклическое изменение свойств. Выполнив программное изменение свойств во втором кадре, компьютер изменит положение объекта, а третий кадр «зациклит этот процесс.

Рассмотрим, как трехкадровый цикл реализуется на практике. Создадим ролик, в котором автомобиль движется от края до края листа, поворачиваясь в противоположную сторону и продолжая движение до бесконечности. У пользователя есть возможность изменять его скорость движения, замедляя или увеличивая его. Внешний вид ролика, разумеется без движения представлен на Рисунок 22. Ниже будет представлен разбор программного кода для реализации данного проекта.



Рисунок 22

Создайте на первом слое рисунок машины, или импортируйте уже готовый рисунок7. Слой переименуйте в «машина», а ключевой кадр продлите до третьего кадра, нажав в третьем кадре клавишу F5.

Конвертируйте рисунок в символ, типа клип видеофрагмента. Дайте имя копии этого символа на плавающей панели «Копия», например, «car».

Создайте новый слой, переименуйте его в «кнопки» и создайте на нем две кнопки «быстрее» и «медленнее».

На новом слое «Действия» создайте три пустых ключевого кадра, три раза нажмите клавишу F7.

В первом ключевом кадре добавьте следующий код:

setProperty ("car", _x, 50);

dx = 5;

MinX = 50;

MaxX = 500;

Обратите внимание, данный код не взят в фигурные скобки и в начале не присутствует on (release), то есть данный код относится именно к кадру, а не кнопке. В данном фрагменте в первой строке у объекта под именем car устанавливается свойство _x (координата по оси x) значение 50. Далее вводится три переменных, вот их смысл: dx – величина единичного перемещение объекта, а также направление движение (смотри дальше), MinX и MaxX соответственно минимально и максимально возможная координата объекта. Вообще можно обойтись без этих переменных, но используя их значительно проще отлаживать ваш проект. Я думаю, более глубокое понимание возникнет при анализе дальнейшего кода.

Во втором ключевом кадре добавьте следующий код:

x = getProperty ( car, _x );

‘ В переменной x сохраняется текущее положение объекта.

if (dx>0) {

if (x<=MaxX) {

setProperty ("car", _x, x+dx);

} else {

setProperty ("car", _xscale, -100);

dx = -dx;

}

}

‘ Конструкция из двух вложенных условных операторов. Первый проверяет dx>0. Если это так, то автомобиль движется вправо. Второе условие x<=MaxX проверяет не достиг ли автомобиль максимально возможной координаты. Если это так то изменяется координата x объекта «car». Если второе условие не выполняется, то максимальная координата достигнута, как результат масштаб по координате х изменяется на -100% (автомобиль переворачивается) и единичного перемещение объект изменяется на противоположное.

if (dx<0) {

if (x>=MinX) {

setProperty ("car", _x, x+dx);

} else {

setProperty ("car", _xscale, 100);

dx = -dx;

}

}

‘ Вновь конструкция из двух вложенных условных операторов. их назначение аналогично предыдущим.

В третьем ключевом кадре добавьте следующий код:

gotoAndPlay (2);

Если вы сейчас запустите проект, то увидите что объект совершает движение вправо-влево. Добавим несложный код, увеличивающий и уменьшающий скорость.

Для изменения скорости нужно увеличить величину единичного перемещения объекта. Код, соответствующие кнопке «быстрее» приведен ниже:

on (release, keyPress "") {

if (dx>0) {

dx = dx+1;

‘ Если единичное перемещение положительно, то нажатие на кнопку увеличивает это перемещение на единицу. Обратите внимание, что тоже действие произойдет если вы нажмете на кнопку на клавиатуре «вправо».

} else {

dx = dx-1;

}

}

Код, соответствующие кнопке «медленнее» приведен ниже:

on (release, keyPress "") {

if (dx>0) {

dx = dx-1;

} else {

dx = dx+1;

}

}

Назначение аналогично предыдущему фрагменту. Вот и все. Запускайте проект, тестируйте его. Полученные знания мы применим в последнем проекте, который объединит в себе два предыдущих и получится игра.

Вопросы для повторения:

  1. Почему программную анимацию невозможно реализовать с помощью обычного цикла «пока»?

  2. Поясните назначение каждого кадра в трехкадровом цикле.

  3. Поясните смысл переменной dx в описанном проекте.

  4. Для чего в программном коде присутствует строка setProperty ("car", _xscale, 100);?

  5. Добавьте к созданному пректу кнопку "остановить".

10. Проект «Интерактивная игра - Тир».


Цель проекта: Создать интерактивную игру тир. На игровом поле перемешается заяц (цель) в которого необходимо попасть с помощью перемещаемой мишени. Попадание необходимо произвести за минимальное кол-во шагов (высчитывается). Примерный вид экрана представлен на Error: Reference source not found.

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

В принципе это – все тот же трехкадровый цикл. В первом кадре задаем начальные параметры:

d = 10;

h = 5;

max_x = 500;

min_x = 50;

rez = 0;

z_x = random (450)+50;

z_y = random (230) + 50;

pr_x = getProperty ( pr, _x );

pr_y = getProperty ( pr, _y );

setProperty ("z", _x, z_x);

setProperty ("z", _y, z_y);

setProperty ("buh", _visible, 0);

d – точность попадания (подробней о этой переменной далее); h – единичный шаг перемещения «зайца»; rez – количество повторений, изначально данная переменная равна нулю; z-x и z-y – начальные координаты «зайца», они задаются с помощью стандартной функции Random, она вызывается с помощью команды Объектов – Математика - Произвольный в окне Действия кадра; далее свойства цели (объект «z») устанавливаются в полученные случайные координаты; и наконец в последней строке устанавливается видимость «выстрела» равной нулю, то есть до поры до времени объект «buh» невидим.



Рисунок 23
А ниже представлен код, соответствующий второму ключевому кадру:

z_x = getProperty(z, _x);

if (h>0) {

if (z_x>=max_x) {

setProperty ("z", _xscale, -50);

h = -h;

}

} else {

if (z_x<=min_x) {

setProperty ("z", _xscale, 50);

h = -h;

}

}

setProperty ("z", _x, z_x+h);

все в точности повторяет аналогичный код второго кадра из прошлой задачи.

В третьем кадре находится всего одна команда:

gotoAndPlay (2);

она позволяет «зациклить» движение цели.

Добавьте код для кнопок, перемещающих мишень вправо-влево, вверх-вниз. В качестве примера приведем код, для перемещения мишени вправо:

on (release, keyPress "") {

pr_x = getProperty ( pr, _x );

setProperty ("pr", _x, pr_x + 10);

pr_x = getProperty ( pr, _x );

}

в этом фрагменте команда pr_x = getProperty ( pr, _x ) повторяется дважды, это – не ошибка. Просто первый раз эта команда нужна для того, чтобы определить положение мишени до перемещения, а второй раз нам нужна новая координата мишени, чтобы при выстреле сравнивать ее с координатой цели.

Осталось добавить код для кнопки «огонь». Он представлен ниже:

on (release, keyPress "") {

rez = rez + 1;

‘ Вне зависимости от результативности выстрела переменная rez увеличивается на единицу.

setProperty ("buh", _x, pr_x);

setProperty ("buh", _y, pr_y);

setProperty ("buh", _visible, 1);

‘ Символ имитирующий «выстрел» перемещается в координаты где в данный момент находится мишень и его видимость становится равной единице.

tellTarget ("buh") {

gotoAndPlay (2);

}

‘ В проекте «выстрел» - это клип в котором проявляется красный круг. Для того, чтобы этого не происходило постоянно в первом и последнем кадре клипа стоит команда stop(). Команда TellTarget показывает компьютеру, что следующие в фигурных стрелках команды относятся только к объекту «buh» и выполняются в нем. Переходя во второй кадр тем самым запускается анимация внутри клипа «buh».

if (Math.abs (pr_x - z_x)
text = "Точно в цель!";

stop ();

‘ В каком случае считать что мы попали в цель – в том случае, если разница между координатами цели и мишени меньше точности попадания (переменная d в первом кадре). Все дело втом, что одновременно выполняться оба условия идля координат x и для координат y, поэтому используется логическая связка И (смотри урок 4). И последнее, мы должны сравнивать модуль разности координат для этой цели используется стандартная математическая функция Math.abs (). Если все условия выполняются, динамическое поле «text» принимает значение "Точно в цель!" и ролик останавливается.

} else {

text = "мимо!";

}

}

Вот и все. Проект работает, цель бегает от нас, а текстовые поля отслеживают его положение. Мишень перемещается по полю, и результаты выводятся на экран. Можно поздравить себя мы прошли весь путь.

Вопросы для повторения:

  1. Какие изученные технологии использованы в этом проекте?

  2. Какое назначение у команды tellTarget ("buh")?

  3. Что нужно изменить в программе, чтобы уменьшить поле движения зайца на 100 пикселей?

  4. Почему сравнивая координату цели и координату мишени, мы должны вычислять модуль данных координат? Как это реализуется во Flash?

  5. Предложите варианты усложняющие игру, предложите пути их реализации.


Мы только прикоснулись к программированию во Flash. Остались не затронутыми такие вопросы, как работа с массивами, мы не работали со звуком и с прокручиваемыми текстовыми полями, мы не работали с объектными переменными. В Flash еще много тайн и сюрпризов, их изучение – это отдельный разговор. Возможно у автора найдется время, чтобы описать и эти интересные аспекты.

Если вас заинтересовали эти первые уроки, заинтересовало программирование во Flash, то эти несколько ночей, что я описывал первые шаги в замечательной программе Macromedia Flash не пропали даром. Вы можете связаться со мной по E-mail, высказать свои пожелания и замечания, задать вопросы, но в любом случае спасибо, что вы дочитали этот текст.


1 Для получения .exe файла вы должны в программе Macromedia Flash создать Flash-ролик, опубликовать его (меню файл – публикация). В результате у вас появляется файл с расширением .swf, просмотреть его можно либо с помощью программы Flash Player (устанавливается автоматически при установке Macromedia Flash. Откроете появившийся файл, выбирете меню файл – создание проектора, задаете имя вашего .exe файла.

2 Не смотря на то, вы видите прямоугольник, как на рисунке, это – граница, при наборе она будет оставаться, но в самом ролике ее не будет видно.

3 Скорее всего, при попытке набрать текст русскими буквами у вас на экране появится «абракадабра». Это связано с тем, что по умолчанию в программе Flash стоит шрифт Times New Roman, в котором отсутствует описание кириллических символов. Поэтому перед набором установите шрифт, поддерживающий кириллицу, например, Times New Roman Cyr или Arial Cyr.

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

5 В четвертой версии Macromedia Flash было наложено ограничение на 20 000 повторений, при попытке выполнить большее кол-во циклов, компьютер во избежании зависания прекращал выполнение кода. Начиная с пятой версии ограничение снято, компьютер только выдает сообщение, что происходит замедление выполнения программы и дает возможность самостоятельно прекратить программу.

6 Для добавление нового ключевого кадра щелкните на кадре №2 в слое действия и нажмите клавишу F7. Flash создаст, новый пустой ключевой кадр.

7 Для импорта рисунка выберете команду Файл – Импорт из других форматов. Будьте внимательны, если в указанной вами папке находятся файлы названные однотипно, например.car1? car2 и т.д. то компьютер предложит их импортировать все сразу. Если вы импортируете векторный рисунок, он окажется на холсте в виде набора группированных объектов. Не забудьте его сгруппировать в единое целое. Если вы импортируете точечный рисунок, он автоматически помещается в библиотеку, а на сцене мы видим его копию.
1   2   3   4   5   6   7

Похожие:

Программа элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий iconПрограмма элективного курса по английскому языку
Его появление вызвано тем, что учителя нуждаются в специально отобранных материалах по литературе для филологического/гуманитарного...

Программа элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий iconРабочая программа элективного курса «Деловая кореспонденция»
«Деловая корреспонденция» для учащихся 11 «б» класса (социально-экономический профиль) учителя английского языка мбоу лицей №1 Козлович...

Программа элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий iconРабочая программа элективного курса «Содержание и языковой анализ текста»
Рабочая программа элективного курса «Содержание и языковой анализ текста» для 9 класса является авторской. Программа составлена на...

Программа элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий iconМетодическое пособие является разработкой элективного курса по предмету...
Данное методическое пособие является разработкой элективного курса по предмету информатика «Графический редактор CorelDraw», для...

Программа элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий iconПрограмма специального курса «Готовимся к егэ по русскому языку»
Программа элективного курса предназначена для учащихся 11-х классов любого профиля и рассчитана на 68 часов

Программа элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий iconПрограмма предметно-ориентированного элективного курса. Учителя истории и обществознания
...

Программа элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий iconРабочая программа учителя информатики и икт бикчантаева А. М. по...
Данная рабочая программа составлена на основании: Стандарта среднего (полного) общего образования по информатике и информационным...

Программа элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий iconКонкурс проводится по следующим номинациям: использование информационных...
«Новосибирскийнациональный исследовательский государственный университет», Высшим колледжем информатики Университета, Институтом...

Программа элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий iconЗадачи, стоящие перед учителем и учащимися в учебном процессе Проверочные...
Проверочные вопросы для определения установки учителя на поддержание коммуникативного поведения ученика

Программа элективного курса и дидактическое пособие для учителя и ученика Титоров Даниил Юрьевич учитель информатики и информационных технологий iconРабочая программа элективного курса для 9 класса «Старт в профессию»

Вы можете разместить ссылку на наш сайт:


Все бланки и формы на filling-form.ru




При копировании материала укажите ссылку © 2019
контакты
filling-form.ru

Поиск