iralebedeva.ru :: зелёный коллаж с цветами
КОНТАКТЫ
E-mail: ira.alma@gmail.com

iralebedeva.ru :: зелёный коллаж с цветами
опубликовано 10.03.2004 (г. Алма-Ата)
Flash-мастерская зелёных страничек
Лекционные материалы, домашние задания и тесты
дистанционного курса «Электронная школа Macromedia Flash MX»

Уроки информатики (лекционные материалы и практикумы)


ЭЛЕКТРОННАЯ ШКОЛА MACROMEDIA FLASH MX
III курс: Основы программирования в Macromedia Flash MX
Модуль III: Безусловный и условный переход
Язык ActionScript

Экспресс-план модуля:
  • Безусловный переход
  • Программа «Толковый словарик»
  • Математические операторы. Операторы сравнения. Логические связки
  • Условный переход
  • Программа «Чемпион». Реализация решения задачи по физике

Безусловный переход

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

Рассмотрим несколько способов организации безусловных переходов в Macromedia Flash MX:

1. В предыдущих лекциях мы познакомились с командой getURL. Эта команда позволяет перейти к документу, «проживающему» по указанному в команде адресу (URL). Обратите внимание, что для того чтобы использовать абсолютные URL (например, http://www.myserver.com), вам необходимо активное сетевое соединение.

2. Команда nextFrame
Синтаксис:
nextFrame();
Эта команда не имеет аргументов и позволяет перевести воспроизведение клипа на следующий кадр.

3. Команда nextScene
Синтаксис:
nextScene();
Эта команда не имеет аргументов и позволяет перевести воспроизведение ролика на первый кадр следующей сцены.

4. Команда prevFrame
Синтаксис:
prevFrame();
Эта команда не имеет аргументов и позволяет перевести воспроизведение ролика на предыдущий кадр.

5. Команда prevScene
Синтаксис:
prevScene();
Эта команда не имеет аргументов и позволяет перевести воспроизведение ролика на первый кадр предыдущей сцены.

6. Команда gotoAndPlay
Синтаксис:
gotoAndPlay(scene, frame);
scene — сцена, к которой применяется действие.
frame — кадр, с которого начинается проигрывание (метка кадра или номер кадра на палитре Timeline).
Эта команда позволяет перевести воспроизведение ролика на указанный кадр указанной сцены. Если сцена не указана, считается, что указана текущая сцена.

7. Команда gotoAndStop
Синтаксис:
gotoAndStop(scene, frame);
scene — сцена, к которой применяется действие.
frame — кадр, который необходимо установить в качестве текущего.
Эта команда позволяет перевести воспроизведение ролика на указанный кадр указанной сцены. Если сцена не указана, считается, что указана текущая сцена. В отличие от предыдущего действия, после перехода на указанный кадр, воспроизведение ролика останавливается.

Программа «Толковый словарик»

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

Палитра Timeline: слой с текстом В ролике будут работать три слоя и пять кадров.

Слой text. На этом слое будут размещены текстовые блоки Static text. На первом кадре слоя поместим «Содержание», а также кнопки, которые призваны, будут открывать выбранные пользователем страницы толкового словарика, иными словами переводить пользователя на нужный ему кадр ролика. Каждому кадру пропишем скрипт:

stop();

Не будем расписывать скрипты для каждой кнопки, позволяющей перейти на тот или иной кадр, напишу только скрипт для последней кнопки:

on (release) {
    gotoAndStop(5);
}

Начиная со второго кадра ролика, организуем работу кнопок «Далее»:

on (release) {
    nextFrame();
}

и «Назад»:

on (release) {
    prevFrame();
}

Это позволит пользователю перелистывать страницы словарика.

Слой close. На этом слое только один ключевой кадр, растянутый до пятого. На нём поместим кнопку с сопровождающим текстом «Выход». Кнопке пропишем скрипт:

on (release) {
    fscommand("quit");
}

Таким образом, мы предоставим пользователю право в любой момент закрыть словарик. Обратите внимание, что на web-странице эта кнопка не работает, так как мы не закрываем браузер.
Слой ramka. На этом слое вы можете позволить себе полную свободу творчества и проявить свои дизайнерские таланты. Протестируйте свой ролик и если это необходимо произведите его коррекцию.

Как видите всё очень просто. Используя полученные навыки, вы можете легко создать электронный учебник или презентовать тот или иной продукт или программу гораздо эффектнее, чем в таком популярном редакторе как Power Point. К тому же не забывайте, что вы вправе создать на основе своего материала проект (исполнимый exe-файл). Этот файл не зависим от программного обеспечения той машины, на которой вы будете демонстрировать своё детище.

Математические операторы

Математические операторы должны быть вам хорошо знакомы ещё из курса средней школы. Эти операторы используют для выполнения операций над операндами в математических вычислениях. В результате этих вычислений образуются числовые значения. Однако в ActionScript есть некоторые весьма специфические нюансы, которых нет в алгебре.

Оператор
Название
Пример
Результат применения
+ Сложение x + y x + y
Вычитание x – y x – y
* Умножение x * y x * y
/ Деление x / y x / y
% Деление по модулю x % y остаток от деления x / y
++ Инкремент x ++ x + 1
–– Декремент x –– x – 1
Унарное отрицание – x –1 * x

Операторы сравнения

Познакомимся с операторами предназначенными для сравнения операндов. В результате сравнения формируется булево значение: true или false. Операторы сравнения чаще всего применяются в составе выражений, именуемых условиями, внутри команд if, for, while. Если условное выражение равно true, вызывается блок команда; если же оно равно false, блок кода скрипта пропускается.

Благодаря операторам сравнения можно сравнивать числа, строки и булевы значения. Эти примитивные типы данных будут эквивалентны только в том случае, если содержат одинаковые значения. Также можно сравнивать ссылочные типы данных, например, объекты, функции и массивы. Они будут эквивалентны только в том случае, если ссылаются на один и тот же объект, независимо от того, содержат ли они одинаковые значения.

Оператор
Название
== Равно
!= Не равно
> Больше чем
< Меньше чем
>= Больше чем или равно
<= Меньше чем или равно
=== Строгое равенство
!== Строгое неравенство

Логические связки

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

Оператор
Название
&& «И», and
|| «Или», or
! «Не», not

Условный переход

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

Давайте попробуем разобраться в синтаксисе, используя общий формат команды.

Общий формат команды (краткая форма):
if (condition) {
statement(s);
}

Как работает эта конструкция?

condition — условие, логическое высказывание, которое может быть истинным — true или ложным — false. Например, if (name == "Best"), эта команда просматривает содержимое переменной с именем name и сравнивает её значение со строкой "Best". В том случае, если содержимое переменной соответствует содержимому строки, то есть высказывание истинно — true, программа переходит к выполнению инструкции или серии инструкций statement(s), записанных в фигурных скобках. Инструкции разделяются точкой с запятой. Впрочем, если вы работаете в режиме Normal Mode, то Flash обо всём этом позаботится сам

.

Общий формат команды (полная форма):
if (condition) {
statement(s);
}
else {
statement(s);
}

Как работает эта конструкция?

В том случае если высказывание, указанное в if оказывается ложным — false, то управление переходит к пятой строке — это альтернативная инструкция или серия инструкций.

Общий формат команды (вложенная форма):
if (condition) {
statement(s);
} else if (condition) {
statement(s);
}

Как работает эта конструкция?

В том случае если высказывание, указанное в if оказывается истинным — true, то управление переходит ко второй строке — выполняются инструкции, заключённые во внутренние фигурные скобки. В том случае если высказывание, указанное в if оказывается ложным — false, то программа пропускает инструкции, записанные во внутренних фигурных скобках, и передаёт управление третьей строке, в которой мы видим ещё одно логическое высказывание. Если это высказывание оказывается истинным — true, то программа переходит к выполнению инструкций, записанных на пятой строке… Вложенность операторов неограниченна!

Программа «Чемпион». Реализация решения задачи по физике

Для практического исследования ветвящегося алгоритма возьмём очень простую с точки зрения физики задачу.

Условие задачи: Развивая предельно возможную скорость своего движения, жираф пробегает за 23 с 335,8 м. Заяц пробегает за 55 с 918,5 м. Кому из этих животных вы присвоите звание чемпиона, сопоставляя их скорости?

Решение задачи сводится к расчёту скорости животных и их последующему сравнению.

Представим алгоритм решения задачи в виде блок-схемы.

Алгоритм решения задачи в виде блок-схемы

Обратите внимание, что в ходе реализации решения задачи мы сделаем ветвящуюся структуру более сложной, а именно будем анализировать содержимое полей ввода. Может быть, пользователь не заполнил какое-то поле и тщетно нажимает кнопочку расчётов? Может быть, введённые им данные не являются числами? Итак, всё по порядку.

Сохраняем на диске файл. В работе на сцене у нас будет задействован всего один кадр, на котором будут размещены текстовые блоки и две кнопки, первая кнопка позволит произвести расчёты и проанализировать полученные в ходе расчётов результаты, а вторая очистит поля ввода и вывода.

Работу с текстовыми блоками Static Text мы упустим. Будьте очень внимательны при работе текстовыми блоками Input Text, заполняемыми пользователем и текстовыми блоками Dynamic Text в которые программа будет вписывать те данные, которые она обсчитает в ходе своего выполнения. Каждому полю Вы должны присвоить уникальное имя. В данном уроке эти имена следующие:

Input Text
Данные жирафа:
Длина пробега — s1; Время движения — t1;
Данные зайца:
Длина пробега — s2; Время движения — t2;

Dynamic Text
Скорость жирафа — v1;
Скорость зайца — v2;
Результат соревнований — zvan.

Палитра Properties: Динамический текст

Итак, мы определились с тем, куда пользователь будет вводить данные, и куда программа будет выводить результаты расчетов и анализа. Осталось комфортно разместить на сцене кнопочки и заставить их работать.

Кнопочке для расчётов пропишем акцию:

on (release) {
   if ((s1=="") || (t1=="") || (s2=="") or (t2=="") || (Number(s1)!=s1) || (Number(t1)!=t1) || (Number(s2)!=s2) || (Number(t2)!=t2)) {
      zvan = " Нет данных!";
      v1 = "";
      v2 = "";
   } else if ((Number(t1)<=0) || (Number (t2)<=0) || (Number(s1)<=0) || (Number(s2)<=0)) {
      zvan = "Среди данных есть нули или отрицательные числа!";
      v1 = "";
      v2 = "";
   } else {
      v1 = Number(s1)/Number(t1);
      v2 = Number(s2)/Number(t2);
      if (v1==v2) {
            zvan = "Победила дружба!";
      } else if (v1>v2) {
            zvan = "Жираф чемпион!";
      } else {
            zvan = "Заяц чемпион!";
      }
   }
}

Обратите внимание, что разветвление программы начинается с того момента, когда мы с Вами начинаем анализировать содержимое полей ввода. Например, в том случае если хотя бы одно из полей ввода осталось незаполненным, программа в разделе «Результат соревнований», в текстовом блоке Dynamic Text c именем zvan выдаст сообщение: «Недостаточно данных», ну а два других текстовых блока Dynamic Text, v1 и v2, судя по тексту программы, будут в этой ситуации просто скромненько помалкивать. Впрочем, Вы можете позволить себе смелый эксперимент и организовать работу программы таким образом, чтобы эти поля не «молчали», а работали при условии, конечно, что нужные им данные будут всё-таки введены пользователем. Например, показатели жирафа были введены, и в поле v1 программа вывела рассчитанную скорость, а вот зайца «обидели», и поле с именем v2 не просто промолчало, а ещё и «обиделось», эту обиду можно представить в виде вопросительного знака.

Если пользователь правильно заполнил поля ввода, то программа попадает на 11 строку акции, где скорости рассчитываются, а затем анализируются. Обратите внимание на вложенность оператора if. Проведите эксперимент, для того чтобы убедиться в том, что созданная вами структура представляет собой единое целое. Для этого встаньте на 2 строку и щёлкните по кнопочке со знаком минус. В акции останутся целыми и невредимыми только первые две строки!

Кнопочке для очистки полей ввода и вывода пропишем акцию:

on (release) {
    s1 = "";
    s2 = "";
    t1 = "";
    t2 = "";
    v1 = "";
    v2 = "";
    zvan = "";
}

Эти строки без комментариев.

Теперь остаётся обсчитать ролик и полюбоваться полученным результатом.

Домашнее задание: Основы программирования в Macromedia Flash MX

Каждый день, в который вы не наполнили своего образования хотя бы маленьким, но новым для вас куском знания… считайте бесплодно и невозвратно для себя погибшим.
Константин Сергеевич Станиславский

1. Создайте ролик, позволяющий определить, является ли введённое число положительным.

2. Создайте ролик, в котором можно будет определить, является ли чётным введённое с клавиатуры число.

3. Создайте ролик, который позволит рассчитать площадь круга и площадь квадрата (радиус круга и сторону квадрата вводим с клавиатуры), а также проанализировать, какая из представленных фигур имеет большую площадь, а также рассмотреть возможность вписать окружность в квадрат.

Выполненное задание представьте в виде файлов в формате fla (если суммарный размер файлов превысит 150 Кб, пожалуйста, упакуйте файлы в архив) и вышлите учителю.

Желаю Вам успехов в самостоятельном изучении Macromedia Flash MX!


Предыдущий модуль:
Модуль II: Ввод и вывод информации
Следующий модуль:
Модуль IV: Команда with, Программа «Правилка»




ваш комментарий *
 
ваше имя

защитный код (цифры с картинки) *




   Аман [11.03.2017, 09:32]
Это классно всё сработано.



statistics
Рейтинг@Mail.ru       Яндекс.Метрика

Распространение материалов сайта приветствуется.
Ссылка на материалы весьма желательна, но не строго обязательна ;-)
«Знание должно служить творческим целям человека. Мало накоплять знания;
нужно распространять их возможно шире и применять в жизни». Рубакин Н.А.