Мы в сети

VK
FB

Оформите подписку!

 Введите Ваш E-m@il и
получайте свежие новости

Страница автора - Рафаэль Кусаматов
Страница автора

Автор: Рафаэль Кусаматов

Самый полный видеокурс по созданию flash сайта с нуля. "Если вы хотите сами сделать Flash сайт или красивую анимированную шапку для сайта, потрясающую фото-галерею или другую флеш анимацию, то вы попали по адресу!"

"В легкой, непринужденной форме мы научим любого слушателя, от ребенка лет 13-ти до пожилого, как сделать ваш сайт самым красивым в рунете!" У нас есть свои секреты, которыми мы собираемся с Вами поделиться. Мы вам предлагаем 4 видеокурса на DVD дисках.

Состав комплекта:

  • В первом курсе "Магия флеша-1" Вы легко научитесь сами делать flash сайты, баннеры, фото-галереи и др.
  • Во втором курсе "Магия флеша-2" научитесь основам ActionScript - SWISHScript,как делать flash часы, прелоадеры, меню, галереи и т.д.
  • В третьем курсе "Магия флеша-3" 40 часов видео, где продолжаем изучать скриптинг.
  • В четвертом курсе "Магия флеша-4" 50 часов видео. Продолжаем изучение секретов и тайн программирования во флеше.

Смотреть видео:


Магия флеша. Как вставить и настроить flash форму обратной связи. (Рафаэль Кусаматов)

Содержание:

ВИДЕОКУРС «МАГИЯ ФЛЕША-1»

"Если Вы Хотите Сами Сделать Flash Сайт или Красивую Анимированную Шапку для Сайта, Потрясающую Фотогалерею или Другую Флеш Анимацию, Причем Без Знаний Каких Либо Языков Программирования, То Вам Сюда!" Авторский курс Рафаэля Кусаматова. Автор не будет Вам предлагать просто переделать готовый шаблон, это слишком примитивно, да и шаблоны все разные. Вы научитесь делать все сами с нуля, чтобы у вас не было затруднений и вопросов в дальнейшем.

СОДЕРЖАНИЕ

Раздел 1. Введение

  • Здесь автор объяснит как создавался и как лучше проходить курс. А так же прямой выход на вашу папку с материалами для работы. Ссылка на секретную страницу журнала для подписчиков, где находится очень много бесплатных уроков по флешу.

Раздел 2. Интерфейс

  • Сначала полностью пройдетесь по всему интерфейсу программы Swishmax-2. Установите должным образом все панели. После этого урока вы уже не будете смотреть на Swish как на новые ворота.

Раздел 3. Первый Flash сайт

  • Проект-1 (теория)
  • Проект-1 (практика)
  • Часы
  • Кнопки
  • Музыка
  • Новая страница
  • Эффекты
  • Фотогалерея 1
  • Продолжение + маска
  • Маска. Эффект воды
  • Маска. Эффект солнца и др.
  • Переключение кадров
  • Мульти-галерея
  • Компоненты. Меню
  • Компоненты. Кнопки
  • Компоненты. Скроллинги
  • Видео
  • Фильтры, прелоадеры и др.
  • Контактная флеш-форма на php

Раздел 4. Flash сайт 2

  • Моргание Глаз. Вода
  • Оживляем скорпиона
  • Звезды. Ореол. Лучи и др.
  • Эффект на кнопке 1
  • Эффект на кнопке 2 (Ночной клуб)
  • Эффект на кнопке 3
  • Эффект на кнопке 4 (узор)
  • Встроенные эффекты
  • Эффект на кнопке 5
  • Еще эффекты
  • Сами создаем меню с нуля
  • Усложняем меню
  • Еще узнаем несколько секретов
  • Резиновый флеш, звуки на кнопки, аудиоплеер
  • Фотогалерея 2 (внутренние фото)
  • Фотогалерея 2 (продолжение)
  • Фотогалерея (внешние фото), эффекты на фото
  • Движущая фотогалерея, с текстом
  • Завершение
  • Новые возможности в Swishmax-3
  • Делаем флеш банер для html сайта

Раздел 5. Flash - html сайт

  • Все возможности программы (начало)
  • Панель навигации (меню сайта)
  • Все возможности программы (продолжение)
  • Как подобрать шапку сайта и др.
  • Сами делаем в фотошопе стильное меню
  • Создание html сайта (начало)
  • Создание html сайта (продолжение)
  • Меню на флеше, флеш-фотогалереи
  • Email форма на html с обработчиком php
  • Информеры на вашем сайте

Раздел 6. Публикация в интернет

  • 3 способа загрузки в интернет
  • Где подбирать ключевые слова
  • Где прописывать теги в Swishmax

Бонусы

  • Видеоурок - "Декомпилятор"
  • Видеоурок - "Анимация в 3D max"
  • Видеоурок - "Flash меню стороннего разработчика (часть 1)"
  • Видеоурок - "Flash меню (часть 2)"

ВИДЕОКУРС «МАГИЯ ФЛЕША-2»

Хотите научиться читать ActionScript как увлекательную книгу? В этом диске в очень свободной форме и на достаточно простых примерах рассматриваются основные понятия и операнды ActionScript 2.

СОДЕРЖАНИЕ

  • Движение, увеличение картинки
  • Управление динамическим текстом
  • Подгрузка внешних текстовых файлов
  • Вывод данных через окно ввода
  • Вывод координат мышки
  • Ввод данных
  • Управление роликами
  • Делаем свой собственный слайдер
  • Делаем свой первый таймер
  • Доводим таймер до совершенства
  • Двоичные переменные
  • Начинаем делать часы
  • Добавляем в часы дату, установленную на компьютере
  • Сделали полнофункциональные цифровые часы с украшениями
  • Делаем аналоговые часы
  • Музыкальная шкатулка
  • Столкновения объектов
  • Делаем прелоадер
  • Продолжение первого варианта прелоадера
  • Добавили проценты в прелоадер
  • Добавили полосу загрузки в прелоадер
  • Добавили слайдеры в муз. шкатулку
  • Добавили к слайдерам динамический вывод
  • Делаем эквалайзер
  • Привязываем эквалайзер к муз. шкатулке
  • Эффекты на мышке, замена курсора
  • Эффекты с маской
  • Эффект торможения при движении объекта
  • Эффект лупы
  • Шлейф объектов за мышкой
  • Разбираем скрипт-исходник шлейфа курсора
  • Шлейфы на разных сценах
  • Эффект развевающегося флага
  • Эффект пружинки-подрагивания
  • Продолжение предыдущего урока
  • Компонент радиокнопка
  • Компонент выпадающее меню
  • Компонент numericstep и textstep
  • Компонент checkbox и его особенности
  • Как сделать ввод пароля или "прохождение спецконтроля"
  • Как сделать скроллинг
  • Начинаем изучать как создавать меню
  • Совершенствуем меню
  • Продолжаем совершенствовать меню
  • Озвучиваем меню
  • Работа с видео
  • Изучаем физические свойства объектов
  • Делаем движущуюся фотогалерею
  • Продолжаем делать фотогалерею, но с внешними картинками
  • Меню с внешними страницами, картинками

ВИДЕОКУРС «МАГИЯ ФЛЕША-3»

Курс для фанатов SwishMax и флэшеров, пытающихся самостоятельно постичь такое непростое дело, как создание своих собственных креативных флэш-проектов. Как вы, наверное, уже успели понять, реализовать ваши идеи невозможно, используя одну лишь анимацию, пусть даже очень продвинутую и замысловатую. Необходимо всё-таки использовать язык программирования для прописывания всех ваших действий, т.е. как это и звучит по-английски - "прописывать, предписывать" - script, "действие" - action, вот и получается надо знать некий язык сценария "что, кому, где и когда" нужно сделать в вашем флэш-проекте.

СОДЕРЖАНИЕ

Теоретическое введение.

  • Вводное объяснение. Знакомимся с переменными. Что это да как с ними обращаться, приступаем потихонечку... onSelfEvent (load) {};
  • Динамически изменяем переменные. Понятие цикла, заставляем машину считать и думать самостоятельно. onSelfEvent (enterFrame) {};
  • Условный переход, время жизни переменных. Машина учится сама делать выбор и принимать решения. if() {}; delete var..;
  • Организация цикла перескоками по кадрам фильма. Разница между SWISHscript и ACTIONscript. Ну наконец-то увидим и почувствуем эту разницу наглядно. gotoAndPlay(); stop(); Math.sin(); Math.sindeg();...
  • Понятие подпрограммы или функции. А что, не повторять же одно и то же, пусть "оно" само как-то там у себя внутри группируется и организуется. function NameFunc(arg1, arg2,..){код... return}
  • Вызов подпрограммы из другой подпрограммы. Вспоминаем теорему Пифагора. Бедный Пифагор! Машина и тут тебя достала!! function АА(arg1, arg2,..){код... function BB(par, par,..){код... return}..}
  • Локальные переменные функций и время их жизни. Одни и те же имена в разных подпрограммах, а код не путается и всё-равно работает!
  • Выход из подпрограммы при разных условиях. Надо же! Разные части скрипта уже чуть ли не беседуют друг с другом - ну лишь бы не ссорились.. function АА(arg1, arg2,..){код1... returnA; код2... returnB;.. }..}
  • Рекурсивное выполнение кода. Высчитываем свой собственный факториал. Ну это значит предыдущий результат изменил как тебе надо, запомнил и теперь опять меняй уже изменённое столько раз, сколько задал, причём всё это делает машина, а ты только прикидываешь - обманывает она тебя или нет. for(i=3;i<=a;i++){fact=fact+i}; _root,  this
  • Объекты на сцене, их свойства, асинхронное выполнение кода. Ну прямо режиссёром себя чувствуешь, роли расписываешь актёрам, их поведения.. и главное они гонорара от тебя не требуют!! _parent, onFrame()
  • Абсолютная и относительная адресация кода. Где и какой код пишется. Один объект управляет другим, а как управлять знает третий - и всё это ты можешь писать и делать сам, машина только учтёт твои пожелания.. Object._x, _y, _alpha…, _vx, _vy, _fx…
  • Система координат сцены и объекта. Координаты курсора мыши и его отображение. Австралийцы действительно там вниз головой ходят что ли? А разве машина каждое моё движение мышкой учитывает? А она сама в этом не путается?_parent._xmouse; _parent._ymouse; _root._xmouse; _root._ymouse
  • Изменение параметров и свойств объекта в зависимости от движений курсора мыши. Это уже не курсор а прямо волшебная палочка какая-то!!  this._xscale; this._rotation..
  • Даже изменяя размеры сцены в будущем можем не менять код, всё пишем в относительных переменных.  Всё можно изменить, даже размеры сцены, а код не изменится, даже рисовать уже точно не надо - машина сама всё расставит, только надо сказать куда, конкретные цифры и координаты она тоже за тебя рассчитает. this._x=Stage.width/2; this._y=Stage.height/2;
  • Вводим понятие мувика. Оказывается мувик это отдельная страна со своими жителями-объектами, своей собственной системой координат и временн?й шкалой, короче со своими законами и поведением. Интересно, а таможня у них там есть?
  • Адресация кодов в случае с мувиками изнутри и "извне" основной линии (таймлайн) . Оказывается даже в разных странах-мувиках скрипт-коды позволяют воздействовать по типу "как мы их так и они нас", надо только правильно адресацию учитывать..
  • Разница в поведении скрипт-кода в случае с  onSelfEvent (press) и в случае с on (press), хотя вроде бы одинаковое воздействие для меню типа Button и Self . Оказывается скрипт-код, размещаясь в одном месте, по сути дела может воздействовать на уровень выше, всё дело в понимании проблемы "родителей" и "детей"..
  • Знакомимся с возможностями влиять на положение и размеры самой сцены при уже запущенном флэш-проигрывателе. Надо же! Оказывается можно крутить не только мувики или объекты, но и саму сцену!!  _root._rotation
  • Как можно отобразить/скрыть меню во флэш-плеере. И это возможно?! Однако! Stage. showMenu();
  • Почти всё о сцене Stage…Знакомимся какие ещё можно вытворять вещи не только НА сцене, но и с САМОЙ сценой тоже. Stage.scaleMode(exactFit , showAll , noBorder , noScale); Stage.alight("B","T", "L", "R", "BL", "BR", "TL", "TR") - выравниваем сцену в окошечке флэшплеера. Ну, громко связано, хотя и такой порядок выравниваний  тоже не помешает. Отображение размеров сцены в пикселях. Это становится возможным, зная Stage.width и Stage.height.
  • Осваиваем полезные фишки - fscommand(). Полезная штучка - теперь можно флэш-проект запускать хоть в полноэкранном режиме, хоть выйти из программы не нажимая на крестик-выход из флэшплеера, только заранее пропиши код и можно забыть о других программах. fscommand("FullScreen",true); fscommand("allowscale",true); fscommand("Quit",true); fscommand("ShowMenu",true)
  • Продолжаем знакомство с  - fscommand(). Учимся как размещать код для одного объекта (obj1) НЕ НА НЁМ САМОМ, а совершенно в другом месте, скажем на другом объекте (obj2). Ну это типа как в бригаде работников инструкция о том, что делать конкретному рабочему хранится у его бригадира, мастера ну или у другого рабочего. Кстати, опять встречаем function() - НО это уже не подпрограмма, а ИНСТРУКЦИЯ, т.к. перед этим оператором мы поставили знак равенства. По-научному это называется "литерал функции". Obj.onPress=function(){код1}; Obj.onRelease=function(){код2}.
  • Знакомимся с нестандартностью объекта типа button - т.е. кнопки. Загадочная "галочка" target. Свойство кнопки enabled=true/false - разрешает/запрещает действовать кнопочной анимации. Оказывается, не всё, что хорошо одному, подходит для другого!!! Это типа как в бригаде работников: инструкция о том, что делать конкретному рабочему хранится у его бригадира, мастера ну или у другого рабочего в этой бригаде. Интересно мы теперь узнали как запрещать/разрешать объекту типа "кнопка" анимацию (перемигиваться или перещёлкиваться). Btn__name.enabled=true/false.
  • У нестандартного объекта типа button, разместили код для него в другом месте, но кнопка.enabled=true/false - разрешает/запрещает работать кнопке как кнопка ПОЛНОСТЬЮ, т.е. не только анимация, но и кнопочный код!! Оказывается эта загадочная "галочка" target автоматически может проставляться - следите за ней!!. А чтобы не проставлялась - вот для этого-то и размещают код не на самом объекте а вне его. _parent. Btn__name.onPress = function(){ startDrag(_parent. Btn__name, false);}
  • _parent. Btn__name.onRelease = function(){stopDrag();}
  • Коды можно размещать не только для объектов-кнопок-фигур-текстов, но и для мувиков тоже! ВАЖНОЕ ОТЛИЧИЕ от вышеперечисленных: вначале появляется мувик а уже потом инструкция к нему. Как говорится "вечером стулья , утром деньги" - или наоборот? Если уж взялся писать код не на мувике помни о "стульях", т.е. последовательность появления "мувик-код".
  • МУВИК_или_ОБЪЕКТ: onSelfEvent (load) {ПУТЬ.МУВИК.onEnterFrame = function() {код;}   }
  • На предыдущем шаге рассмотрели команду для каждого кадра мувика, размещённого на другом мувике вида onEnterFrame. В случае же команды инициализации вида onLoad приходится менять синтаксис, хотя в инструкции это и не указано. Как оказалось, если посмотрите следующий шаг, нельзя настоящему флэшеру тупо следовать приводимой документации, надо её перерабатывать.
  • МУВИК_или_ОБЪЕКТ: onSelfEvent (load) {ПУТЬ.МУВИК.onLoad(код)   }
  • Ещё раз убедились, что настоящему флэшеру надо пробовать применять и другие команды - а вдруг сработают?! Вот и в этом шаге ещё одно неожиданное открытие ПОЧТИ противоречащее предыдущему - интрига, однако...
  • МУВИК_или_ОБЪЕКТ: onSelfEvent (load) {
  • ПУТЬ.МУВИК.onLoad(код1);
  • ПУТЬ.МУВИК.onLoad(код2);}

Проект эффект "домино" как наглядная модель для начала понимания основных принципов, изложенных в теоретической части.

  • Начинаем применять полученные теоретические знания на практике - создаём эффект домино. Увидим как, начиная с простых элементов, мы уже без труда ориентируемся в большом нагромождении созданных нами же мувиках, как событие по времени в одном мувике заставляет работать соседний… Заодно в последнем шаге цикла уроков "домино" вспомним и самое главное сравним разницу в методе вызова звука командой play("звук") и вызовом из другого мувика. Но, как окажется, позже узнаем ещё более эффективный  или скорее "эффектный" способ привязки звука к определённому событию, который гораздо проще, но к этому надо прийти через понимание, как создавать некие новые объекты, да ещё и познакомиться с так называемыми КЛАССАМИ создаваемых 

Изучаем градиентные маски.

  • Фокусы с маской. Узнаем что бывают ещё и градиентные маски, "работают" они правда во флэш-плеере не ниже 8-й версии, но оно того стоит! Удивимся, как можно сквозь одно "кино" видеть другое и всё это программным способом через скрипт. Диапазон применения таких масок достаточно широк - от простого эффекта замёрзшего окна с реалистичным прогретым участком до стильного "туманного скроллера". Да, мы же ещё можем программно включать или выключать эти маски!! Попробуйте это сделать простой анимацией! Ничего не получится! - а тут через скрипт, оказывается, можно и такие фокусы делать!! Основные операторы, которые мы узнаем в этом разделе: Obj.cacheAsBitmap=true/false; Obj.setMask(mask); Obj.setMask(null);

Создаём проект с перетаскиваемыми и вращаемыми картинками.

  • Приступаем к созданию интересного проекта - "перетаскиваемые фотки с изменяемой глубиной и с возможностью вращения вокруг собственного центра". Чтобы понимать с какого бока подойти, с чего начать - просто создадим некую модель и начнём всё на ней в дальнейшем отрабатывать.
  • Начинаем модель вращать - вот где нам опять пригодился  Пифагор!!! Ну заодно придётся вспомнить что такое радиус/радиан/градус… косинус-синус, арккосинус,арксинус..
  • Вроде бы всё начинает потихоньку проясняться - вводим понятие угла вращения для нашей пока ещё такой "квадратной" простенькой модели.
  • Ура! Уже получается заставить вращаться нашу модель, если её потянуть за уголок..
  • Для того чтобы двигаться дальше изучим как можно "заставить" двигаться какой-нибудь объект по заранее определённой траектории, например по синусоиде или окружности.. Теперь понятно зачем мы в первых 29-ти шагах так упорно изучали теорию…
  • Отработали всё на простой модели, но в жизни то так не бывает, приближаемся к реальности, теперь у нас модель вращаемой фотки может быть с разными соотношениями сторон не обязательно "квадратными". Но, правда и количество переменных возросло - ничего не поделаешь - за универсальность надо платить..
  • Пора уже взять за правило- все коды писать ВНУТРИ мувика, по-возможности не на самой сцене! Пока не поздно и код не разросся до астрономических размеров - быстренько всё написанное для теперь уже "усложнённой" модели переносим в отдельный мувик. Заодно ещё раз посмотрим что надо учитывать при подобном переносе кода, действительно, не просто же тупо копируешь коды из одного объекта в другой.
  • Изучаем что значит "границы срабатывания" мувиков.. Уже сталкивались с подобным явлением "фантомов" при изучении "эффекта домино" в шагах 30-37… На основе уже исследованной вдоль и поперёк модели начинаем её заменять "реальными" рисунками-фотками.., короче, наполнять модель конкретным контентом..
  • Оппа-а-а!!! На практике увидели вот она в чём разница между переменной типа _global и её обычным "локальным" аналогом.!! Получается, что воздействуя в конкретном примере только на одну фотку я могу через эти "глобальные" переменные ОДНОВРЕМЕННО воздействовать на все остальные фотки-мувики в нашем проекте..
  • В 70-м шаге столкнулись с "фантомами", а теперь достаточно просто убираем  этот эффект. Вот в чём разница между кодами on(Press) и onSelfEvent(press)!!! Влияет ещё и место, где этот код написан! Демонстрируется дополнительная возможность анимирования обычной фотки - а сделать-то надо всего  ничего -  надо картинку сгруппировать как кнопку - и всё!!
  • Начинаем изучать что такое глубина размещения мувика на сцене, как можно ДИНАМИЧЕСКИ менять взаимное размещение объектов, т.е. кто "выше", кто "ниже". Для этого нам пригодятся такие операторы как: MovieClip.SwapDepths(); obj.getNextHighestDepth();
  • Для простой операции задания начальных условий фильма совершенно естественно приходим к пониманию что такое массив… В "полезности" таких классов объектов можно убедиться на рассматриваемом примере - в самом деле ну не перечислять же тупо всё подряд, пусть "само" себя запоминает и "содержит" в специальных ячейках-массивах. Основной и альтернативный способ объявления массива.
  • Основные операторы, которые мы узнаем в этом разделе: new Array(); obj=[Z0,Z1,…Zn]; eval();

Изучаем фильтры.

  • Подро-о-о-обно объясняем такое важное понятие как класс объектов, МЕТОД, который можно применять к объекту и через эти понятия уже приходим к пониманию фильтров. Что это за фильтры такие - вкратце, в компонентах они присутствуют, но мало где встречается их толковое объяснение. Начиная с этого шага мы ЛЕГКО научимся применять их на практике!! Кстати, фильтры в Adobe и Макромедии применяются по необходимости достаточно просто, надо лишь воспользоваться одной лишь галочкой в нужном месте. Однако и в Свише это сделать теперь будет совершенно нетрудно. Правда не забывайте для этого экспортировать в версию флэшплеера 8 и выше.
  • В этом уроке мы ОЧЕНЬ ПРОСТО и БЫСТРО можем добавить тень к любому объекту на сцене. Кастати, объект может быть движущимся, анимированным, не обязательно статическим, а тень всё это повторяет!!!
  • Основные операторы, которые мы узнаем в этом разделе:
  • Некая_переменная=new flash.filters.DropShadowFilter(param1, param2,…);
  • объект.filters = [Некая_переменная];
  • Здесь мы делаем просто-напросто открытие!!! Оказывается код при загрузке фильмы выполняется по-умолчанию "снизу-вверх". Что это значит? Ну так посмотри скорее урок - не пожалеешь..
  • Продолжаем "мучить" фильтры… А можно ли ОДНОВРЕМЕННО к одному и тому же объекту применить несколько фильтров? Скажем и с тенью и с эффектом размытия (BlurFilter)? Оказывается можно!! И очень даже быстро и легко!
  • Основные операторы, которые мы узнаем в этом разделе:
  • Некая_переменная_1=new flash.filters.DropShadowFilter(param1, param2,…);
  • Некая_переменная_2=new flash.filters. BlurFilter (param1, param2,…);
  • объект.filters = [Некая_переменная, Некая_переменная_2];
  • Программно управляем фильтрами. Примеры как это можно делать при уже запущенном флэшплеере - через изменение параметров, входящих в состав того или иного класса конкретного фильтра. Параметры можно менять через тот же слайдер, например. Как сделать ОЧЕНЬ быстро простейший слайдер - см. в 85-м шаге. Как работают ещё пара фильтров Glow и Bevel? Чтобы не морочить себе голову где какой параметр за что отвечает, в 87м шаге приведён соответствующий стенд-конструктор по каждому из четырёх фильтров..
  • Как устроен, как сделать, какой параметр и как влияет на… Короче, всё про фильтр ColorMatrixFilter.  Здесь параметров ну уж о-о-о-очень много, но, благодаря соответствующему стенду-конструктору всё это нагромождение цифр становится таким "родным и понятным"…
  • Фокусы-трюки с изученными ранее фильтрами. Естественно, у меня эти примеры достаточно схематичны, но на полученных здесь и ранее понятиях уже можно сделать свои собственные трюки, достойные уважения среди даже продвинутых флэшеров - в СВИШе сделать это, благодаря множеству встроенных эффектов, опять таки гораздо быстрее и проще..
  • Приступаем к изучению DisplacementMapFilter - ну о-о-о-очень многоцелевой и довольно сложный для понимания. Ещё бы  - ведь здесь используются понятия из арсенала ActionScript3.0 - да-да, именно 3-й версии языка сценариев, хотя СВИШ оперирует только 2-й версией скрипта, ОДНАКО какие-то элементы из  "тройки" всё же доступны!! Начнём изучение с одного из составных элементов этого фильтра - класса объектов BitMapData. Основные операторы, которые мы узнаем в этом разделе: Переменная_ = new flash.display.BitmapData(150, 200, true, 0x880000FF); мувик.attachBitmap(Переменная_,0)
  • Создаём свой собственный стенд-конструктор на основе BitMapData - конструктор шумов!!! Теперь мы легко можем сгенерировать программным способом что-то напоминающее телевизионный шум (не помехи а именно шум) причём чёрно-белый или цветной - как фантазия подскажет. Знакомимся с понятиями шума (noice, perlinNoice).
  • Пример живого TV-шума на старом телевизоре с переключением каналов. У вас должно получиться лучше чем у меня, теперь это легко и нетрудно!!!
  • Знакомимся с ещё одной разновидностью и понятиями шума (noice, perlinNoice). Создаём опять ещё один стенд-конструктор для генерации облаков, дыма, тумана, огня, пламени, полярного сияния… Благодаря созданному стенду-конструктору perlinNoice у вас должно получиться лучше чем у меня, возможности создаваемых "живых узоров" будут ограничены только вашей фантазией.
  • На основе предыдущих шагов пытаемся "оживлять" статичные фотки живыми узорами - изменяющееся облачное небо, полярное сияние…
  • Ну вот и подобрались к самому главному - до этого, оказывается, мы изучали только ЧАСТЬ фильтра DisplacementMapFilter - под названием BitmapData. Да-да, всего лишь только часть! Теперь, научившись им пользоваться, используем этот BitmapData -объект как основу для реального изображения. Например, на этом шаге мы "зашумляем" эту "bitmapdata-вскую" основу и "накладываем" на неё наше изображение - в результате у нас само изображение тоже подвергается ТАКОМУ же "зашумлению". Добиваемся эффекта как будто рябь по воде в котором отображается изображение. Правда само изображение немного сдвигается - ну это видимо объясняется самой природой этого фильтра, его названием, ведь в переводе DisplacementMapFilter и есть фильтр СМЕЩЕНИЯ, т.е. смещаться как бы должна "основа" (BitMapData) и изображение..
  • Сделали конструктор теперь уже самого DisplacementMapFilter. Теперь, меняя параметры в этом фильтре на нашем конструкторе, полученные конкретные числовые сочетания каждого параметра будем переносить на конкретное изображение, например, сделаем реалистичное отражение в воде. Кстати, в отличии от "обычных" отражений в воде, которые мы до этого умели делать анимацией с маской, мы можем делать так, что это отражение будет более спокойным или волны движутся за ветром, меняя цифры в определённых параметрах. Посмотрев этот урок вы уже самостоятельно можете сделать так, что если эти цифры привязать к курсору (отследите на конструкторе в каких пределах и какие цифры менять), то можно добиться того, что курсор как бы "колыхает" водную поверхность при перемещении (вместо координат движка конкретного ползунка подставьте значение _xmouse, _ymouse)…
  • В конструкторе до этого шага мы научились учитывать вроде бы всё, но есть ещё один ОЧЕНЬ странный оператор, отвечающий за класс объекта flash.geom.Point(0,0). Оказывается, мы работали только с ЛИНЕЙНО зависимыми точками, а ведь можно сделать это вообще СЛУЧАЙНОРАСПРЕДЕЛЁННЫМ. Т.е. сформируем некий странный массив, где координата каждой точки в этом массиве будет случайно формироваться. Элемент этого странного массива состоит из ПАРЫ значений, соответствующий координате этой случайной точке. Мда-а-а, массив мало того что странный, у него и синтаксис вообще непонятный от того с чем мы до этого имели дело, как так можно писать!! Как будто из другого языка программирования взято!! Однако же, интерпретатор языка всё это всё равно понимает!! Хотя это уже элементы из Actionscript3.0!!! Ну тогда мы можем добиться формирование вполне реалистичного пламени, огня, костра, возгорания, факела…!!! Получается, до этого с водой  всё "баловались" с отражениями в ней, с облачками, теперь "с огнём поиграемся"..
  • Чтобы быть "образцовыми пожарниками" мы должны поисследовать как этот огонь "горит"? Значит, создадим на базе конструктора фильтра смещения конструктор пламени. Только не станьте "пироманами" - всё это будет в виртуале… Заодно вспомним как быстро можно применить в конструкторе компонент NumericStep_silver.
  • Дыма без огня не бывает - ещё как бывает!!! Вот посмотрите, как делать сигаретный дым. И не только сигаретный, конструируйте сами дым и его форму, только не "обкурите" монитор, компьютер, мозги… впереди ещё много интересного, не зависайте только на этом - хотя, соблазн попускать колечки после этого шага наверняка будет, хотя бы для того чтобы дух перевести…
  • Курить вредно! Вот посмотрите как антиникотиновую рекламу можно сделать, применяя все те наработки, которые мы уже успели изучить на предыдущих шагах. Кстати, к дыму, пламени… ведь тоже можно эффект добавить и тени, и размытия, и свечения… Экспериментируйте, не только "курите", кстати, дым в виртуале может не только "выкуриваться", но и "вкуриваться" обратно. Не верите? - проверьте сами, если к нашему "странному массиву" добавлять или отниммать дополнительные параметры - даже направление ветра, куда дым-огонь идёт, можно сформировать.. Мда-а-а, явно перекур затянулся, завораживает, но давайте пойдём дальше.. Просто не верится, что всё это делает один только фильтр смещения (DisplacementMapFilter), ну, правда, в сочетании с BitMapData, DropShadow, Blur, Glow и Bevel..
  • Начинаем делать совсем уж непонятные вещи, типа стеклянной надписи. Правда, чем непонятнее эффект, тем непонятнее и синтаксис операторов его реализующих, и ещё дополнительные новые МЕТОДЫ, применимые к классу BitMapData, появились. Как они работают? Да толком и неизвестно, описание не совсем чётко это всё прописывает, много неоднозначности. Но зато посмотрите какой эффект!!!
  • Операторы и методы, которые мы узнаем на этом шаге: mapBitmap.draw(myMap); filter.mapPoint = new_pt; И возьмите за правило - не только обучающий фильм соответствующего шага смотрите, но и при разборе исходника почитывайте комментарии, которые я периодически пишу на полях во вкладке с кодами…
  • Примеры, как можно сделать потрясающе непонятные эффекты типа стеклянной надписи ну и ещё чего-то в такой же "непонятной вариации". Заодно познакомимся с непонятным поведением кода при реализации этих эффектов.. Сплошные загадки!! И кто теперь будет утверждать, что в языке программирования всё заранее определено?! Иногда такие фокусы проявляются! Может быть это только у меня одного? Поделитесь опытом!!

Создаём детскую раскраску.

  • Начинаем делать "детскую раскраску" с чистого листа, для этого познакомимся с операторами,  с помощью которых можем осуществлять динамическое рисование, динамическое закрашивание простым равномерным цветом и стирание… Операторы с которыми мы познакомимся: beginFill ([rgb[, alpha]]) ;  clear() ;  endFill() ;  lineStyle ([thickness[, rgb[, alpha]]]) ;  lineTo (x, y) ; moveTo (x, y) ;
  • Опять вспоминаем, что код будет усложняться, переносим все коды со сцены в мувик. Вспоминаем о том, что мувик это практически отдельная вселенная со своей системой координат, следовательно надо учитывать все пути к тем объектам, к которым применяем действия (или иначе операторы). Увидим, что язык программирования как и обычный язык общения допускает многовариантную взаимозамену, например, clear() ; можно заменить unloadMovie(); - а результат будет тот же.
  • Учимся рисовать не только прямыми, но и кривыми линиями, применяя оператор curveTo (controlX, controlY, anchorX, anchorY) ; 
  • Учимся раскрашивать "красиво", т.е. градиентной заливкой. Оказывается в градиентной заливке так много переменных и параметров, что просто напоминает по сложности изученный ранее фильтр смещения. Но, имея под рукой конструктор градиентной заливки - необходимость в подробнейшем изучении каждого параметра просто отпала - выбираешь сталь заполнения и полученные в конструктору цифры для параметров переносишь в создаваемый флэш-проект. Оператор в этом шаге: beginGradientFill (fillType, colors, alphas, ratios, matrix) ;
  • Динамически раскрашиваем фигуру произвольной формы, применяя маску. Начинаем подбираться к пониманию того каким способом будем делать нашу детскую раскраску. Понимаем что для фигуры нужен ещё и её же контур, если вдруг решим закрасит её "белым" цветом, совпадающий  с цветом сцены. Создали уже свой первый набор красок для будущей раскраски. Если мы плохо рисуем или совмещаем - созданным нами же кодом скрываем наши огрехи на этапе создания объектов.
  • На основе созданных на предыдущем шаге принципе закрашивания кодах к нему создаём другой такой же объект. Опять для раскраски потребовались не только локальные, но и переменные глобального типа. Внимание на рассуждения в шаге 130 - начинаем выстраивать принцип присвоения имён переменным и мувикам - при разрастании нашего объекта этот наращиваемый принцип наименований очень даже нам пригодится!!
  • Создали "кисточку-индикатор" как "напоминалка" выбранного из палитры раскраски цвета.
  • Оптимизируем код для нашей "кисточки", для этого применим вместо набора операторов всё необходимое "упакуем" в функцию. Но совершенно неожиданно решили создать не просто функцию, а ГЛОБАЛЬНУЮ функцию. Синтаксис объявления глобальной функции в СВИШе довольно оригинальный: _global.ИМЯ_функции= function(){код…} но, как вы убедитесь в дальнейшем, глобальная функция очень даже нам пригодится. Мда-а-а, ещё одно открытие не только в самом типе функции но и в синтаксисе её объявления, хотя сделано в уроке это было как бы мимоходом..
  • Границы срабатывания мувиков обычно такие "синеникие прямоугольнички" вокруг выбранного объекта. А что делать, если нам надо, чтобы событие, в нашем случае это динамическая заливка, происходила только ВНУТРИ контура произвольной формы? Ну, на этой паре шагов мы уже кое-что умеем, например, раскрашиваем ТОЛЬКО в момент ПЕРЕСЕЧЕНИЯ курсора мыши контура произвольной формы. Делается это с помощью оператора путь.объект.hitTest(_root._xmouse, _root._ymouse, 1); Правда встречается ещё один "странный" на первый взгляд оператор проверки условия if (путь.объект.hitTest(_root._xmouse, _root._ymouse, 1)) {код..}; видите, нет самой проверки!! Где все эти проверки типа ( ==true) или (<=false) ??? Оказывается, если не пишется проверка, подразумевается, что написано (==true)
  • Чтобы срабатывание происходило не только в момент пересечения границы, но и внутри контура объекта, применяем очень полезный оператор hitTest(); , но для очень "странного" на первый взгляд объекта, который мы специально для этого создали-нарисовали. А чтобы он не пугал своей "странностью" сделаем его невидимым, применив свойство _alpha=0;
  • Что делать, если границы ну или контур одного объекта как бы наползает или даже пересекает другой, как тогда будет срабатывание происходить? Оказывается для этого пригодится такое понятие как ГРУППА, т.е. объединяйте всё что нужно не в мувики или кнопки, а именно в группы! Ставьте галочку "target" на группу - и получается, что объект уже "видится" операторами и к нему можно применять какие-то действия. Вполне реальная ситуация, как оказалось, скажем, когда один объект находится как бы внутри другого, как бы обтекает его… Да что там говорить - смотри и всё поймёшь..
  • Ну вот и приступаем к созданию собственно "детской раскраски", до этого теория, началась практика. Но коды то уже все на моделях отработаны!! Осталось только сам исходный рисунок-раскраску вначале обработать..
  • В уроке обработано предварительно в Фотошопе, хотя можно было в любом другом доступном для вас графическом редакторе.
  • Лень - двигатель прогресса!!! Ну не хочется делать однообразную и скучную операцию - применим такой прекрасный инструмент по переводу имеющейся у нас растровой графики (основа детской раскраски) в векторную форму. Для этого воспользуемся Corel Trace12 из комплекта CorelGraphicsSuite12. Дело пошло значительно быстрее!! Да, вид стандартного курсора заменим на нашу созданную ранее "индикатор-кисточку", добавим кнопочку СБРОС… . Расширим палитру цветов - и всё! Раскраска готова. Зовите детей к компьютеру поиграть..

Все кнопки мыши и клавиатуры.

  • Как научить флэш реагировать на среднее колесо мышки? На нажатие этого колеса? На правую/левую клавиши? На их сочетание? Оказывается всё это делается через систему т.н. "listner" или иначе "слушателей". Изучим операторы класса Mouse:
  • obj = new Object();   Mouse.addListener (obj); obj.onMouseWheel = function (  ) { код: }
  • Затем убедимся, что "слушателем" может быть ЛЮБОЙ уже существующий объект фильма, даже сама сцена.
  • Научим теперь флэш реагировать не просто на поворот колеса мыши, но и различать в какую сторону оно повернулось. Делаем это через аргумент функции:
  • obj.onMouseWheel = function ( param ) {if(param >0) код1; if(param <0) код2;   }
  • Начинаем учить флэш тому, чтобы он реагировал на колёсико только когда наведу курсор мыши на какой-то "верхний" мувик. Что это да как это - разбираемся…
  • Небольшие фокусы с колёсиком и учимся как убирать реагирование на поворот - Mouse.removeListener(obj); Доработали наш проект (шаги 57-80) так, что перетаскиваемые и вращаемые фотки теперь ещё могут менять свой размер при прокрутке колёсика.
  • Исследуем далее класс Mouse… Научим флэш реагировать на движение курсора мыши, на этой основе, зная уже динамическое рисование, создадим что-то типа виртуальной доски с выбором цвета, типа и цвета рисуемой линии, используя имеющиеся компоненты из арсенала СВИШа … onMouseDown(); onMouseUp(); onMouseMove();
  • Приступаем к изучению класса Key. Теперь подробненько и внимательно будем нажимать и отжимать клавишу "any key".
  • onKeyDown();
  • Начинаем различать ЧТО мы нажимаем, какую конкретно клавишу, в каком регистре … Key.getCode();Key.getAscii(); keyPress("F"); keyPress("a"); рассмотрим так же специальные клавиши NumLock Caps… - как реагировать на них.. Как сделать реагирование на сочетание - комбинацию одновременно нажатых клавиш. Помните знаменитое Ctrl-Alt-Del  ?!
  • Через понимание работы с клавиатурой неожиданно приходим к пониманию того как заставить флэш понимать нажатие на колесо… кстати, почти недокументированные возможности скрипта нам тут демонстрируются..
  • Попробовали задействовать все кнопки мыши на примере "сигаретного дыма", теперь, прокручивая колесо мы изменяем параметры "вкуривания-выкуривания" а по нажатию лев/прав клавиши мыши применять те значения, что были "накручены" колесом.
  • Заметили, по правой клавише всегда выскакивает pop-up-меню? Как от этого уйти? В стандартном макромедиавском флэш-проигрывателе это сделать невозможно, почему?-посмотри урок и поймйшь. НО, можно применить другой бесплатный проигрыватель, где не выскакивает эта иногда раздражающая менюшка.
  • А можно ли вообще сделать так, чтобы флэш-фильм проигрывался не в окне, а скажем ВООБЩЕ без всякого окна? Или, скажем, окно было нестандартным, например, без этих трёх кнопок ЗАКРЫТЬ, СВЕРНУТЬ, РАЗВЕРНУТЬ? Или НЕПРЯМОУГОЛЬНЫМ? В виде какой-то фигуры?.... оказывается МОЖНО!!! И тоже средствами СВИШа, правда применяя немного другую программу, но из того же "свишевского" семейства и той же фирмы-производителя. Как? - посмотри - узнаешь…
  • Хитрые возможности правой клавиши мыши. Как от неё защититься??!! Да-да, именно защититься?? В уроке подробно раскрывается почти "предательская" роль такой вроде бы безобидной на первый взгляд правой клавиши мыши..
  • Ну раз такая предательская роль в этой правой клавише, может попытаемся хотя бы уменьшить её роль? Скажем, изменим значение, набор и название тех пунктов меню, которые обычно выскакивают в pop-up-менюшке при нажатии по-умолчанию. Делаем это через ContextMenu();
  • Наконец-то раскрывается секрет как сделать защиту от "предательской роли" правой клавиши!!.
  • Научимся делать так, чтобы при нажатии по правой клавише НА РАЗНЫХ ОБЪЕКТАХ в фильме появлялись РАЗНЫЕ pop-up-менюшки, соответствующие только конкретному определённому в коде объекту

Создаём музыкальный mp3-плеер.

  • Начинаем изучать зачем нужна библиотека? Иными словами вкладка "Content" ? Зачем она нужна? Как ею пользоваться? Начнём понимание этого через использование такого интересного класса, как Sound()
  • На основе изучения свойств объектов класса Sound() научимся делать музыкальный проигрыватель. Быстро сделали элементарный слайдер, регулирующий громкость, баланс, кнопку стерео/моно
  • Неожиданно объясняется как сделать кнопку-триггер с тремя и более состояниями
  • Продолжаем совершенствовать музыкальный, точнее звуковой флэш-проигрыватель встроенных во флэш звуковых файлов. Добавляем кроме стерео/моно зацикливание при воспроизведении
  • Создаём звуковой флэш-проигрыватель ВНЕШНИХ звуковых mp3-файлов. Посмотрим какие тут могут быть подводные камни и особенности..

Как работать с библиотекой (вкладкой Content).

  • Продолжаем скрупулёзно изучать, как работать с библиотекой - вкладкой "Content". Вытаскиваем из библиотеки объект на сцену и удаляем.. Знакомимся с символьным редактором.
  • attachMovie("link","newmc",this.getNextHighestDepth()); removeMovieClip();
  • "Terra incognita" - "неизвестная земля"… Мы вступили на зону под названием "недокументированные возможности СВИШа". Сплошные загадки, но работают!!! Чувствуешь себя "сталкером" в этой области. Из библиотеки можно вытащить хоть сколько экземпляров, оказывается, но воздействовать можно только на один - "первый", а с остальными как?, типа бомжи какие-то скриптовские!!! Но уже и это можно применить в игровых ситуациях, только код на БИБЛИОТЕЧНОМ экземпляре пропиши соответствующий, т.н. "неименной". Правда в примере показано, что объект может просто перемещаться, а ведь через тот же hitTest() можно прописать что делать при столкновении с чем-то, вот тебе и реализация пулек-выстрелов-взрывов…, причём неограниченной ёмкости, "стреляй-не хочу.."
  • Из библиотеки можем вытаскивать библиотечный объект, но с разными параметрами. Обратите внимание на синтаксис - не через равенство, а через двоеточие,  и в фигурных скобках (напоминает как мы изучали фильтр смещения с эффектом пламени, там тоже попался нам "странный массив" с необычным синтаксисом координат точек, см. шаги 112-113, короче, вот как можно самому допонять природу такого синтаксиса, скорее всего это "initObject", а в нём через двоеточие присваиваются значения… Или у вас другое мнение? Не стесняйтесь - земля-то неизведанная, малоизученная. Или точнее малоописанная, легко и первооткрывателем стать, своё имя присвоить..) attachMovie("link","newmc",this.getNextHighestDepth(),{_xscale:130,_yscale:130,_alpha:55,_rotation:45})
  • Попытка навести какой-то порядок в нашем "курятнике". Применим  к объекту не метод, а ссылку !! Тогда, благодаря "именной" ссылке. У нас больше не будет бомжей, управлять можно всеми или каждым в отдельности, прописали всех!! И в зазеркалье можно жить, оказывается…Имя_ссылки=attachMovie("link","newmc",1);

Создаём тест-опрос с автоматическим подсчётом баллов на введённые ответы.

  • Учимся создавать опросные листы, или иначе ТЕСТЫ с приёмом ответов от ученика, при этом наша флэшка будет сама оценивать введённые ответы и выставлять оценки. Вот где нам пригодились понятия глобальных и локальных переменных!! На этих шагах создадим т.н. "рыбу-скелет" - основу для блока-вопроса с предлагаемыми вариантами ответов и блока приёма ответов на него с подсчётом полученных правильных и неправильных ответов. Заодно применяем тут "одноразовые кнопки", чтобы ученик не смог перевести ответ.

Учимся делать флеш-игры.

  • Начнём делать игры. Всё изучить, конечно, просто физически не успеем, поэтому начнём с простого - с изучения некоторых игровых моментов, а именно: управление перемещением объекта по клавишам. Например, по клавишам перемещения (влево, вправо, вверх, вниз) Key.isDown(Key.LEFT); Key.isDown(Key.RIGHT); Key.isDown(Key.UP);  Key.isDown(Key.DOWN));
  • Сделали управление по тем же клавишам, но с инерцией. Теперь уже нельзя заранее сказать где остановится перемещаемый объект, учитываются моменты удержания клавиши в нажатом состоянии и момент отпускания. Да-а-а, вот где азарт появляется! Копировать пора наш фильм в одну из 4х разрешённых в России игровых зон..
  • Вносим различные поправки в движение - ветер, притяжение, сила удара…
  • Научившись управлять объектом, давайте придумывать нашу первую игру - ГОНКИ - гоночная машина будет ездить по дороге, тормозить, ускоряться, поворачиваться… Все связанные с этим моменты - как это всё будет выглядеть в коде..
  • Ну для начала создадим дорогу, по которой ездят.
  • Учим будущую машинку не съезжать с дороги, опять пригодится уже изученный ранее hitTest().
  • Делаем всё более похожей на реальную игру - добавили кнопку СТАРТ и соответствующие этому знаменательному событию для нашей гонки коды, ввели ограничение по перемещению за пределы фильма.
  • В момент отладки кода делаем для себя очередное открытие - не всё может нормально запускаться во внутреннем плеере СВИШа!!! Для того чтобы убедиться в работоспособности созданного вами же кода не верьте самому СВИШу!! - да-да!! Запускайте свой шедевр во ВНЕШНЕМ проигрывателе, не изводите себя программированием. Может быть вы уже давно всё и так написали правильно, только результат вы увидите СНАРУЖИ, не изнутри. Удивительно, прямо как в поговорке - нет пророка в СВОЁМ отечестве, оценят другие, "снаружи", не "внутри"..
  • Дописали игру, добавив элемент ФИНИШа, количество кругов или заранее определённого расстояния трассы.. Конечно, получившееся это только схема-набросок, условно-схематичное изображение игры, но на полученных в этих шагах навыках уже вполне по силам сделать свою собственную "гонялку-ездилку" или даже автосимулятор. Хотя почему сразу "авто"? Можно же типа танка, лыжник-слаломист с горы препятствия объезжает.. да много чего напридумывать на созданной основе уже можно..
  • Заставим мячик отскакивать от стен. Создадим что-то похожее на игру в пинг-понг. Фантазии у меня лично уже не хватает - отдельный диск наверное делать придётся. Тогда опять хотя бы схематично набросаем самое основное, хотя и в созданном уже можно поиграть. Главное помните? - угол падения равен углу отражения, вектор скорости… Опять начнём как обычно с модели, поизучаем все возможные ситуации и отработаем в виде кодов. Оказывается есть удары по часовой и против часовой стрелки - просто анатомия движения какая-то!
  • Делаем "умную анимацию", в частности умные вращающиеся колёса. Опять вспоминаем геометрию, длина окружности… Потом объект поставим на колёса и полученную телегу будем не перемещать, а катать!! Причём кататься у нас будет и с инерцией, и с ускорением, да ещё и проезжающий пейзаж будет меняться. Смотря куда соберёшься ехать, поэтому на шаге 211 для этого сделали заготовки под бесконечную панораму и под дорогу. А пейзаж у нас меняется НЕРАВНОМЕРНО - фон медленней, близлежащие деревья так и мелькают..
  • Домодифицировали нашу предыдущую икру в пинг-понг, поставив на колёса биту, которой мы шарик отбивали - ну в принципе у нас и стены ходят и бита с инерцией ездит - какой-то "пьяный - зазеркальный" вариант игры получился..
  • Начинаем стрелять из пушки. Вспоминаем опять физику - как ядро летит по параболе, какие силы на него воздействуют, как всё это в коде прописать..
  • Объясняется как сделать "резиновый" эффект, типа шарик от курсора на невидимой резиночке отскакивает и опять прибегает..
  • Курс подрывника. Начинаем изучать как делать взрывы. Природа конкретног взрыва, его различные виды… в итоге начнём делать свою собственную "галерею взрывов". Вы делаете свою собственную, неповторимую, выбирая различные параметры, эффект взрыва позволяет делать ОЧЕНЬ МНОГО вариантов - проверить все возможные комбинации у меня просто не хватает терпения
  • Создали пушку у которой ствол с инерцией перемещается и расставили мишени - попади - взорвётся. Причём взорвётся так, как ты и выбрал из своей "взрывной галереи". Игра, конечно, это только заготовка воспользуйтесь своим собственным сценарием и теперь уже вам вполне по силам создать свою собственную стрелялку со своими мишенями - подвижными, неподвижными.., в которой стреляют не только по параболе, но и по прямой…

ВИДЕОКУРС «МАГИЯ ФЛЕША-4»

Продолжаем изучение секретов программирования во флэше, знакомиться с механизмами взаимодействия нерассмотренных ранее операторов, особенностями применения той или иной технологии, повышаем свой уровень понимания флэш-программирования и владения некоторыми приёмами и хитростями до уровня ПРОфессионала. Данный курс представляет из себя набор так модных ныне в образовании сгруппированных общей рассматриваемой темой уроков – так называемых обучающих модулей. Всего их 12 – дюжина. Некоторые уроки из каждого модуля имеют упоминания о наработках и выводах, сделанных, скажем, в другом модуле. Но это совершенно не значит, что надо придерживаться какого-то рекомендуемого порядка. Начинайте обучение в той последовательности, которая вам больше нравится, ориентируясь на приведённое ниже описание.    Начните делать свои уже ПРОфессиональные шаги во флэш-программировании, используйте программу SwishMax уже ПРОфессионально. Неспроста каждый шаг, каждый урок в названии имеет эту приставку PRO – т.е. «профессионал»!!!

СОДЕРЖАНИЕ

Модуль 3D

Попробуем "заставить работать" флэш как некая программа по 3Д-моделированию. Для этого познакомимся с программами-уменьшителями, приёмами "обмана зрения", методами и приёмами создания кнопок управления по вращению 3Д-моделей …

Из курса Вы узнаете:

  • Вводное объяснение как во флэше реализовать вращение 3Д-модели в одной плоскости.
  • Ввели полосу прокрутки, чтобы можно было при её помощи вращать модель в одной плоскости
  • Разобрались как крутить при помощи ползунка, а теперь как прокручивать при помощи одной только нажатой мышки, ну, пока только в одну сторону…
  • теперь можем крутить при помощи одной только мышки уже и в другую сторону, причём неограниченно по количеству этих самых прокруток.
  • От одной плоскости переходим к понятию как же крутить модель в ещё одной плоскости. Для этого надо познакомиться с "раскадровкой" - т.е. представим нашу модель в виде определённой последовательности статических рисунков, расположенных в определённой последовательности.
  • Научимся по колесу мышки изменять масштаб 3Д-модели. Пока только на примере 4-х слоёв отработаем механизм вращения и в горизонтальной и в вертикальной плоскостях одновременно.
  • Вставили все требуемые проекции и на пока ещё неоптимизированном коде уже вполне реализовали требуемое 3Д-вращение во всех осях
  • Оптимизируем код, делая его универсальным, добавляем опции управления и прелоадер.
  • Добавляем "многослойные" кнопки управления по автоматической прокрутки модели и покадрового перехода на примере вращения в одной плоскости.
  • Оптимизируем код и совершенствуем логику управления вставленных кнопок.
  • Реализовываем кратковременное нажатие на кнопку и длительное нажатие - как реализовать такую логику работы и научить флэш понимать такой вид действий пользователя. Добавим кнопку нормального и полноэкранного просмотров.
  • Добавили кнопки перетаскивания и вращения для детального рассмотрения каких-то мелких деталей нашей 3D-модели. Кстати, полученный код кнопок уже вполне можно применять для какого-нибудь интернет-магазина, когда предлагается просмотреть товар со всех сторон, предварительно профотографировав этот самый товар фотоаппаратом, в нашем же примере эту последовательность фоток заменяют картинки 3D-модели.
  • Объясняется как сделать требуемую последовательность снимков 3D-модели в программе 3D MAX.
  • Объясняется как уменьшить размер полученных картинок в программе RIOT и как работать с плагином Swift 3DMax - Swift Renderer.

Модуль FLIP

Учимся делать "книгу-листалку", в которой реализовывается эффект перелистывания страницы. Как делать "дырявые страницы", как вставлять внешние swf или рисунки на страницы книги, одна флэшка на разворот двух страниц, объекты за пределами страниц, закладки,… как сделать универсальный код для всех возможных случаев компоновки содержимого книги …

Из курса Вы узнаете:

  • Разбираем исходный код книги-листалки, делаем плакат по структуре и компоновке мувиков в листалке. Как переворачивать объект при помощи obj._xscale=-100 и как работает obj.setMask() и зачем он нужен при перелистывании страницы.
  • На основе плаката создаём структуру мувиков книги с самого нуля.
  • Попытаемся разобраться в самом механизме перелистывания, доперелистывания и недоперелистывания, находим параметры, влияющие на жёсткость страницы, скорость анимации и проч… Добавили кнопки перехода на следующую и предыдущие страницы без анимации перелистывания.
  • Добавили кнопки перехода на следующую и предыдущие страницы с эффектом перелистывания.
  • Добавляем кнопки реализации закладок с эффектом перелистывания на требуемую страницу.
  • Упрощаем код и помещаем всё в "один удобный мувик". Содержимое страниц помещается в Content.
  • Делаем "дырявые страницы", сквозь которые видны содержимое других "нужных" страниц.
  • Добавляем звук перелистывания страниц.
  • Добавляем индикацию текущей страницы, общего количества страниц, размещаем на страницах "живые интерактивные флэшки". Объясняется, что надо внедрять такие флэшки, в которых не надо использовать, скажем, кнопки, не требующие нажатия, поскольку нажатие - это активизируется функция перелистывания страницы (хотя, в 22м уроке этого учебного модуля показано решение данной "проблемы").
  • Делаем содержимое каждой страницы в виде отдельного swf-файла и подгружаем их через LoadMovie(), и как для этого надо сместить центр мувика соответствующей страницы.
  • Создаём "всеразмерную заготовку листалки" под загрузку внешних swf или jpg-файлов на страницы книги. Задаём размер подгружаемых картинок и их количество - подставляем указанное количество в код и листалка уже готова! Правда, пока нет теней от переворачиваемых страниц.
  • Как делать "музыкальные страницы", чтобы музыка одних страниц не мешала бы другим… Используем глобальные переменные для управления и взаимодействия между "главной" флэшкой и подгруженными внешними файлами swf.
  • Как делать интересные развороты книги, как резать развороты, как сделать "живой интерактивный разворот" на примере горизонтальной панорамы, как это объяснялось в модуле FS - вот где пригодились наши наработки предыдущих уроков по взаимодействию двух swf-ок между собой через заданные глобальные переменные.
  • Поподробнее объясняется как размещать горизонтальную панораму на разворот "листалки". Украшаем страницы "блёстками" и другими "фенечками"…
  • "Запоздалые мысли" по поводу предыдущего урока, программный способ создания теней книжки, как оказалось, сильно "нагружает" итоговую флэшку-листалку, поэтому, усложняем структуру мувиков, добавив тени от перелистываемых страниц, смотрим, какие тут всплывают особенности… Подробнее исследуем setMask() для реализации задуманного…
  • Делаем автоматический заворот уголка для переворачивания страницы при приближении курсора мыши к заданной "зоне срабатывания". Корректируем форму этой "чувствительной зоны" для всех четырёх уголков.
  • Автоматически расставляем все рабочие участки листалки, самоадаптирующиеся под задаваемые размеры страницы, знакомимся с таким понятием как "порядок загрузки" - т.е. в каком порядке считывать коды мувиков, как оказалось в SwishMax порядок один - "снизу вверх". Корректируем границы программируемой маски для теней и страниц, модернизируем общий код и порядок размещения всех мувиков.
  • Очередные "запоздалые озарения" по поводу программируемой маски, но отработанный и отшлифованный механизм взаимодействия мувиков перенесём на тени для перелистываемых страниц. Как ведут себя анимированные элементы, выходящие за пределы границ листа для чётных и нечётных страниц книги, как для таких флэшек, где элементы выходят за пределы Сцены надо настраивать Экспорт в настройках SwishMax. На этой основе можно делать страницы с элементиками, выбегающими за границы наблюдаемого  листа или разворота, как сделать эта "вылезания" не мешающими другим таким же страницам. Для этого взаимодействия опять используем программируемые маски.
  • Подробно рассматриваем как делать "дырявые страницы" в случае, когда страницы подгружаются в виде отдельных файлов swf. Для этого делаем плакат-заготовку для создания, взаимного размещения и нумерации создаваемых элементов. Оживляем "дырчатые страницы" на примере разных обложек реальных печатных журналов. Знакомимся с программой RIOT, уменьшающей размеры картинок, вставляемых в книгу.
  • Добавляем однократный или бесконечный звук на "дырчатые страницы"
  • На основе предыдущего урока выясняем, что не всегда удобно пользоваться onEnterFrame - т.е. отслеживать событие по каждому кадру. Иногда система сама просто "не успевает" на каждом кадре отслеживать абсолютно все заданные события, поэтому, надо систему слегка "разгружать" и отслеживать события не по каждому кадру, а пореже, но функционально более надёжно, например, используя отслеживание на каждом 10м или 20м кадрах… Добавляем и оживляем фон, столешницу, на которой лежит наша "листалка".
  • Наконец-то разобрались как вставлять на страницы интерактивные флэшки, требующие нажатия на кнопки или др. элементы и при этом не будет перехватываться событием перелистывания страницы. Для этого создаём т.н. "зоны свободные от перелистывания при нажатии" и размещаем эти зоны совпадающие по размерам с этими самыми "кнопками-нажималками". Книга наконец-то стала полностью функциональной и код стал универсальным под все возможные варианты компоновки страниц и их содержимого.

Модуль AS-LIB

Данный учебный модуль сгруппирован на два подмодуля:

  • первый (16 уроков) - для изучения внешней библиотеки mctween, внешние as-файлы, создание зоны срабатывания для анимации появления и исчезновения для группы   оригинальных кнопок, создание оригинальной "менюшки-расползушки"…
  • второй модуль (6 уроков) -  как на основе данной библиотеки создавать красивые галереи с внутренними или внешними файлами-картинками…

Узнаем особенности подключения внешних библиотек в SwishMax, знакомимся как применять тот или иной эффект для притормаживания, ускорения, пружиночного подёргивания… всё для программной реализации того, что раньше до этого частично делалось эффектами, но с подключенной библиотекой анимация стала гораздо богаче и интерактивнее…

Из курса Вы узнаете:

  • Знакомимся что такое "внешняя библиотека" и чем она отличается от уже известной нам "внутренней" (вкладка Content). Для начала создадим сами свою простейшую внешнюю библиотеку в виде as-файла и подключим её с помощью
  • include "file.as";.
  • Где размещать as-файлы для совместной работы, настройки в меню программы SwishMax для работы с этими as-файлами, теория как работать с известной внешней библиотекой MCTWEEN и преимущества в отличие от использования привычного свиш-эффекта, примеры и типы анимаций.
  • Делаем первые шаги по использованию богатого арсенала возможностей mc_tween, создавая простейшие интерактивные элементы на примере Resize() . Увидели где подключать библиотеку - предпочтительнее не раньше 2го кадра Сцены, и не внутри мувика.
  • Делаем стильные кнопки для горизонтального или вертикального меню с эффектом вращения изображений кнопки, наподобие как в "одноруких бандитах".
  • Для изучения свойств дополнительных переменных extra1 и extra2 в библиотечной функции 
  • mc.resizeTo(200, 200, 4, "easeOutElastic", 0, undefined, extra1, extra2);
  • создадим наглядный плакат для подбора приемлемых значений для достижения требуемого вида анимации.
  • Изучаем как использовать функцию callback, способы обратного вызова функции, которая говорит "что надо сделать", когда закончится анимация. Пример нескольких анимаций поведения объекта при одном и том же событии на примере размытия (blur).
  • Добавляем звуки к нашим стильным кнопкам.
  • Добавляем стильный анимационный эффект появления и исчезновения уже для группы наших озвученных стильных кнопок. Особенности неодновременного проигрывания звуков или анимации с запаздыванием.
  • Создаём зону срабатывания появления и исчезновения группы кнопок, вспоминаем наработки и коды из "детской раскраски" из предыдущего диска, отрабатываем в коде основные приёмы функционирования.
  • Узнаём особенности работы "зоны срабатывания" с подробным разбором совместной работы двух мувиков, в которых реализуется слежение за разными событиями, создали универсальную структуру мувиков и кодов для зоны срабатывания группы кнопок для какого-то меню.
  • На основе исследований в предыдущих уроках сделаем с самого начала практический пример группы кнопок с групповой анимацией появления и исчезновения при пересечении какой-то зоны срабатывания.
  • Начинаем делать проект оригинального меню типа "расползухи", где взаимоизменяются все размеры всех взаимосвязанных элементов, убеждаемся, что привычными до этого эффектами такое "чудо" просто не реализовать - такое возможно только при помощи подключенной внешней библиотеки mc_tween.
  • Начинаем понимать как работает эффект "расползухи" пока только по горизонтали на примере пока только трёх объектов.
  • Создаём макет будущей сложной "менюшки-расползухи" и начинаем понимать принцип прописывания начальных и конечных условий взаимной анимации части элементов будущего проекта.
  • Прописываем начальные и конечные условия для оставшихся элементов, их центры координат и их взаимное смещение друг относительно друга.
  • Предварительно мы все взаимные анимации сделали только для простых элементов, теперь сделаем эти простые элементы сложными, т.е. добавим маски и дополнительную "внутреннюю" анимацию.
  • Создаём галерею с анимацией на основе mc_tween в случае когда элементы галереи помещены во внутреннюю библиотеку (вкладка Content).
  • При стильной анимации часто возникает потребность перемещаться на кратные величины, а для этого надо понять как округлять по заданному модулю для реализации задуманного, в итоге анимация сама будет "дотягивать" перемещение объекта до задуманного положения самостоятельно.
  • Опять создадим что-то типа наглядного плаката, в который введём дополнительные возможности выбора анимации и её длительностей для тестирования получающейся галереи.
  • Теперь преобразуем галерею для использования внешних картинок или флэшек. При размещении этих внешних файлов в интернете и при запуске галереи локально неизбежно выскочит предупреждение о "небезопасном обращении по web-адресу такому-то… Разрешить?" - как разрешать такие запросы…
  • Домодернизируем галерею под использование внешних jpg в дополнение к внешним swf-файлам с несколькими вариантами…
  • Добавим прелоадеры для каждой внешней подгружаемой jpg-картинки или swf-файла галереи и готов окончательный вариант галереи с выбором анимации просмотра.

Модуль SNAKE

Учимся делать игру "удав" или "змейка"… как на основе принципа действия перемещения объектов друг за другом последовательно по цепочке можно делать всякие "болтающиеся верёвки", "рисование ртутными шариками" и другие интересные эффекты …

Из курса Вы узнаете:

  • Вспоминаем как работать с Библиотекой (вкладка Content) и подробно объясняется как реализовывается принцип перемещения одного объекта за другим по очереди с запоминанием "где надо поворачивать".
  • Позиция последующего равна позиции предыдущего и какие эффекты получаются в динамике.
  • Реализуем управление "головой" змеи по клавишам управления.
  • Реализуем ситуацию, когда змея "кусает" сама себя и когда удавчик выползает за пределы игрового поля и при этом голова появляется с противоположной стороны - т.е. перескок на другую сторону.
  • Если змейка съедает "еду" - длина змеи увеличивается…
  • Делаем так, чтобы "еда" появлялась случайно в каком-то месте игрового поля "змейки"…
  • … при этом не попадала бы сразу в тело змеи - пусть удав поползает за ней, а не будет ситуации, что еда сама в рот заскакивает.
  • Делаем условие, когда игра заканчивается (GameOver).
  • Если змейка съедает "яд" - то длина змеи уменьшится…
  • Создаём индикацию подсчёта очков и принцип что и как подсчитывать…
  • Создаём эффект "проглатывания еды" по всей длине удава.
  • Создаём эффект проглатывания "яда"…
  • Особенности при размещении игры "удав" в интернете. Дополняем функционал игры до полностью самодостаточного варианта.
  • Что можно сделать на основе принципа работы перемещения объектов по цепочке друг за другом, ну, например "эффект ленточки" в художественной гимнастике…
  • Странный эффект "болтающихся верёвочек" или "магнитных газопроводов" - проще урок посмотреть чем пытаться объяснить и описать этот эффект на бумаге…
  • Ещё несколько примеров на основе принципа "удава" - например, "рисование ртутными шариками", попытка реализации дрожащей струны и др. эффекты.

Модуль LINK

Иногда удобно поменять что-то только в одном месте, а все остальные сделают так же. Но для этого надо, чтобы "все остальные" были как-то связаны "телепатически" с этим самым "изменяемым местом". Как эту "телепатию" между объектами создать и какие преимущества при этом появляются…

Из курса Вы узнаете:

  • "Подарок" для тех кто не любит программирование и скриптинг. На основе уже изложенного открытого урока про "эффект трюмо", создадим некий эффект из множества несвязанных между собой объектов. Вроде бы всё красиво получается, но, как, например, быстро вносить теперь изменения во все эти объекты? Это же долго и "неблагородно"…
  • На основе продемонстрированного в предыдущем уроке знакомимся с такой "фишкой" как "Add to Library and create a link"   заодно узнаем, что имея подобную связь можно изменить только в одном месте, скажем, толщину линий, а эти изменения коснутся все остальные связанные элементы.
  • Иногда в старых исходниках могут встречаться такие "артефакты", как связь элемента, находящегося на Сцене (Scene) с элементом, находящимся в Библиотеке (Library), хотя в самой библиотеке этого объекта и нет! Один объект на сцене изменяем и тут же меняются другие "залинкованные с ним объекты" - БЕЗ применения Символьного редактора! Как такое может быть? - разбираемся….
  • Выяснили, что с новыми версиями SwishMax всё же понятнее работать да и понадёжнее будет, вместо эффектов вставили код, добавили ползунки-движки - в очередной раз "убеждаемся", что скриптинг предоставляет гораздо больше свободы действий, чем простой эффект, пусть даже и с "залинкованными" объектами.

Модуль XML

Изучаем XML - наверняка многие про это слышали, но что это такое?, где может пригодиться?, как применять?... в конце изучения перестаём бояться этого "непонятного зверя".

Из курса Вы узнаете:

  • Приступим к знакомству с XML - что это такое, но прежде вспомним как мы можем "запихивать" данные из внешнего файла txt во внутрь флэшки…;
  • Для тех, кто совсем не знаком с тем, что такое html, css - краткий обзорный урок (знающие могут и пропустить…);
  • Создали наш первый xml-документ - ну и что?…
  • …ага, оказывается вместе с xml можно и css подключать "для украшения" той информации в браузере, что мы в набрали в xml-файле, в разных браузерах по-разному всё может выглядеть, ну а в о флэш-то всё это как "засунуть-то"?…
  • … оказывается в одном xml-файле можно ссылаться на другой, тоже xml-файл, ну и что? Как же с флэшем-то работать?...
  • Ну наконец-то подобрались к скрипту!!! Выясняем как же надо считывать данный xml-файл - оказывается надо создать объект нового пока что для нас класса (через new XML(); ) и только потом, применяя к нему определённые методы, считывать что же у него там внутри.
  • Разбираемся в "родственных связях" узлов и значений… - как же тяжело и запутанно порой на первый взгляд добраться до имени узла или его значения…
  • Постепенно и подробно рассматривая, где находится каждый узел в xml-файле и как отдельные элементы этого файла соотносятся друг с другом - приходим к выводу, что проще обращаться с ними как с элементами некоего массива (childNodes).
  • Подобрались к тому, что уже можем считывать из xml-документа (или xml-объекта) не только имена и значения каждого узла, но и атрибуты конкретного узла, правда, мы обязательно должны знать имя этого атрибута, тогда только сможем узнать его значение, но и это уже неплохо…
  • …ну а чтобы узнать имена атрибутов - познакомимся сначала как работать с циклом типа for-in (не путать с циклом типа for() !!!) и заодно узнаем о двух способах задания свойств объекта (например: myobj=new Object();  myobj.speed=33; myobj.cvet="zel"; myobj.massa=79;
  • или то же самое, но в одну всего лишь строчку: myobj={speed:33, cvet:"zel", massa:79 };)
  • Тут научимся "рассовывать" по ячеечкам вытащенное из цикла типа for-in имена и соответствующие значения атрибутов и узнаем о полезном свойстве array.push() - как "заменитель" длины массива (array.length).
  • Здесь научимся придумывать такие алгоритмы считывания, которые позволят нам не заботиться особо о количестве атрибутов - можем сколько угодно менять, добавлять, переименовывать любое количество атрибутов с соответствующими значениями - всё будет разложено по полочкам…
  • Научимся проверять на "валидность" наш xml-документ, начнём с самого "корня" - с корневого узла…
  • … и по уже понятой ранее аналогии можем дальше заглядывать глубже и глубже внутрь xml-документа. Теперь количество узлов, их имена и атрибуты можем менять так как нам захочется - алгоритм "подстроит" флэшку под внесённые в xml-файл изменения. В этом нам поможет не совсем обычное применение цикла for (помните? не путать с for-in).
  • …начнём делать что-то "полезное", скажем, разберём компонент "Combo-Siver" по косточкам, слегка прикоснёмся к такому понятию как "компонент-скриптинг" и увидим, что можем вносить содержание пунктов выпадающего меню напрямую в уже имеющуюся переменную, прямо в код…
  • …но тут выясняется, что коды выполняются не совсем так, как они написаны, т.е. не совсем линейно, а как-то скачками, особенно, когда идёт считывание данных из другого файла…
  • …поэтому то и приходится иногда разделять считывание данных и их приём, т.е. как бы в одном мувике будет происходить считывание из XML-файла, а мувик, в котором всё считанное принимается, появится на сцене попозже (кадров на 5-10) - и тогда только эта приёмопередача состоится. Принцип "разделяй и властвуй" (появление мувиков НЕОДНОВРЕМЕННО здесь подходит как нельзя лучше!!! Т.е. иногда все действия производить только при загрузке (onLoad) невозможно - надо дать время разным частям программы "очухаться" и собраться с мыслями разным частям программы для выполнения работы.
  • …продолжаем совершенствовать наш компонент Combo_siver, который может работать совместно с XML-файлом… заодно научимся как удалять "ненужный" нам последний символ в строке.
  • И вот тут у нас несоответствие выявилось - как же связать данные, считанные из XML-файла и соотнести каждый пункт с предписанным ему действием? Ну, для начала вспомним, как вообще в этом компоненте можно эти действия вызывать. На примере перехода к нужному кадру в мувике.
  • В файл XML добавили недостающие действия и прописали их в виде атрибутов к каждому пункту. А вот как соотнести массив с именами пунктов и массив с соответствующими каждому атрибутами действий - надо просто внимательнее присмотреться к описанию этого компонента - и вот неожиданное решение появилось прямо из этого описания, а именно - функция GetCurSel();
  • Вот и получилась у нас самая настоящая галерея из картинок на основе XML-файла и стандартного компонента Combo-silver! Количество картинок может задаваться, подписи и комментарии к ним тоже, адреса загрузок каждой картинки… - всё это прописывается теперь в одном и том же XML-файле, а сам swf-файл остаётся при этом неизменным. Галерея - это, конечно, частный и самый простой случай применения изученной технологии, на основе которой вы теперь сможете решать и более сложные задачи в ваших флэш-проектах.

Модуль SO

Что такое SharedObject?Как сохранять данные из флэша на вашем локальном диске, например, вы набрали сколько-то очков во флэш-игре, при выходе из игры и при запуске её по-новой - ваш сохранённый результат будет учитывается…

Из курса Вы узнаете:

  • Вводное объяснение зачем нужны эти Shared Object, файлы *.sol, служебные директории со служебными названиями, структура директорий хранения SO.
  • "Деликатный" оператор SharedObject.getLocal(), сохраняем наши первые данные в разных директориях, даже если названия директорий написаны не латиницей.
  • Сохраняем разные данные в разные sol-файлы и учимся теперь считывать данные из этих же файлов.
  • Усложняем задачу - теперь несколько переменных сохраняем в одном и том же sol-файле и считываем их…
  • А что если в один и тот же sol-файл будут записываться данные из нескольких флэшек? Ну, тогда "кто последний - у того и право на запись" - что-то типа "морского закона"… Смотрим как это реализуется….
  • Научимся как из флэша удалять с диска то, что мы до этого сохраняли, т.е. удаляем полностью сам sol-файл.
  • Научимся как надо определять размер в байтах sol-файла.
  • Научимся программно выходить на вкладку "Settings…", причём сразу на вкладку "Local storage". Ну, заодно уж сразу и на все остальные вкладки через System.showSettings().

Модуль PRINT

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

Из курса Вы узнаете:

  • Для тренировки и изучения надо подключить виртуальный принтер и просмотрщик "напечатанного" - xps-файлов.
  • Из множества объектов, размещённых на Сцене разместим кнопки для выборочной печати, скажем, на печать вывести только картинки или только текст.
  • До этого делали выборочную печать для неподвижных - статических объектов, здесь смотрим особенности распечатки анимированных объектов по меткам (#p).
  • Распечатываем "секретный объект" из флэшки - на экране компьютера этого объекта не видно, однако при распечатки секретный текст или логотип-рисунок, как "чёрт из коробочки" - печатаются и только вы задаёте как и где ваш "чёртик" будет распечатан.
  • Попробуем защищать нашу флэшку от воровства содержимого, например - от копирования экрана - PrintScreen, для этого посмотрим в уроке как применять System.setClipboard().
  • Подробно рассматриваем параметры команды print() - bmovie, bmax, bframe
  • Недокументированные возможности оператора print() - на экране видим одно, а при распечатке дополнительную, более расширенную информацию.
  • Изучаем особенности оператора printAsBitmap
  • Оператор printNum() - особенности применения в SwishMax, распечатывается только нужный "слой" флэшки, а это уже "чёрт знает что!!!".
  • Изучаем класс PrintJob. Через этот класс можем считывать те параметры, которые пользователь сам задаёт при выводе на печать (ориентация страницы - альбомная, портретная; размер бумаги - А4,А3…) И на основе этого флэш может сам перестраивать вывод на печать объектов на сцене.
  • Узнаем что такое "дюймы, сантиметры, пункты, твипы" и как флэш может распечатывать заданное исходя из установок печати, выбранных пользователем.
  • Продолжаем изучение класса PrintJob…Пожалуй, все изученные возможности при распечатке из флэша нам хватит для дальнейшей уверенной работы.

Модуль MP3

MP3-файлы имеют тэги с дополнительной информацией о прослушиваемом звуке. Как их считывать, как их редактировать, какие особенности при проигрывании файла локально или с интернета - т.е. знакомимся с т.н. "потоковым аудио", индикация считанных тэгов на кириллице и др. "нелатинских" символах, в виде бегущей строки…

Из курса Вы узнаете:

  • Знакомимся с такими понятиями как дополнительная информация файла. Оказывается, любой графический файл может иметь exif-данные, что уж говорить о такой дополнительной "инфе" для mp3-файлов, которые называются mp3-тэги. Начинаем знакомство с методом id3… Пока, стандартным способом, не получается считывать тэги, записанные кириллицей.
  • Разница между 1й и 2й версиями тэгов ID3v1 ID3v2, по прежнему всё ещё пытаемся считывать кириллицу, но узнали как считывать больше информации из муз.файлов….
  • Познакомились с бесплатным редактором тэгов TagScanner, наконец-то кириллица стала считываться!!! Вроде бы и всё?, однако, мы познакомились только с "локальным" проигрыванием mp3-файлов!!!
  • Начинаем знакомство с потоковым аудио - т.е. проигрываем файл, который на компьютер ещё не закачался полностью, но мы его уже можем прослушивать, а остальное пусть себе докачивается потихоньку… Знакомимся с таким "явлением" как разрешение обращения к интернету при проигрывании локальной флэшки - В 7й версии этой надоедливой меюбшки не выскакивает, однако, начиная с 8й - это приходится делать, поэтому или размещайте тестовые флэшки на своём хостинге или запускайте флэшки из самой программы SwishMax.
  • УзнаЁм где локально сохраняются звуковые файлы, прослушиваемые из сети, если в тэгах не указана длительность звукового файла, то узнаём как её "вычислить". Узнаём о такой "коварности" некоторых хостингов, что при размещении больших звуковых файлов и затем их онлайновом проигрывании эти самые некоторые "бесплатные" хостинги начинают "вредничать" - как? В чём это проявляется? Давайте познакомимся и с таким явлением в этом уроке….
  • Оказывается для правильного перевода секунд в минуты, часы надо узнать что такое "деление по модулю". Создаём mp3-плеер с индикацией сколько уже скачалось при прослушивании потокового аудио, на какую секунду записи надо перейти и т.д.
  • Учимся делать "ползуночек" плеера с возможностью перемотки, узнаЁм более подробно про метод применения MovieClip.onEnterFrame;  для решения этих и подобных задач. Создали учебный плакат универсального плеера для локального и потокового аудио со всеми возможными функциональными кнопками и индикацией.
  • Учимся делать считывание всех тэгов mp3- файла в виде "бегущей строки", появляющейся надписи конкретного тэга и т.д….  Изучим "полезность" оператора SetInterval();
  • Продолжаем совершенствовать методы индикации сосчитанных тэгов звукового файла.

Модуль MCVIDEO

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

Из курса Вы узнаете:

  • Знакомимся с классом Microphone, как сделать так, чтобы флэш понимал и считывал сигнал с микрофона, кричим в микрофон и "заставляем" объекты двигаться быстрее… Реализовываем модель "мечта начальника" - после его окрика перемещение сотрудников ускоряется соответственно силе крика - полная имитация рабочего процесса…
  • От аквариума с рыбками, управляемых по голосу через микрофон, переходим к созданию "пляшущего человечка".
  • На основе всё того же микрофона создаём "цветомузыку", заодно подробнее знакомимся с классом Color. Оказывается переходы от шестнадцатиричного представления в десятичное и обратное имеют много "фокусов", а уж зачем и как вы будете применять всё это многообразие цветоуправления - зависит от вас.
  • Знакомимся с классом Camera, как можно поиграться с изображением, захваченного с вэб-камеры. Приводятся основные понятия, которые нам очень пригодятся в дальнейшем при знакомстве с потоковым видео. Посмеёмся над своим же изображением, примерив на себя генеральский мундир.
  • Научимся как вставлять видео с youtube во флэш, причём с разными параметрами, которые нам позволяет этот видеохостинг (например, автоматическое проигрывание , проигрывание сразу с конкретной секунды, в полноформатном режиме, на весь экран браузера, с комментариями и без и т.д…. - полный и понятный список всех возможностей применения в своём флэш-видеоплеере).
  • Особенности проигрывания видео с youtube в разных браузерах. Оказывается, у каждого свои требования, к каждому свой подход…
  • Рассматриваются возможности вставки во флэш видео с других видеохостингов, НЕ-youtube. Выясняем, что другие сервисы не позволяют "командовать собой" в отличие от youtube, "не выносят" того, что видео-флэшка становится подчинённой в созданной вами флэш-проекте…
  • Знакомимся с потоковым видео. Класс NetConnect, NetStream… Создаём учебный плакат с понятной логикой работы как управлять стриммингом и осуществлять индикацию.
  • Продолжаем совершенствовать наш наглядный учебный плакат управления потоковым видео, flv-файлом. Приходит понимание как вообще реализовываются все те кнопки управления в видео-компонентах.
  • В поисках места где хранится длительность видеофайла неожиданно знакомимся с таким явлением, как "метаданными и контрольными точками видеофайла" (методы onMetaData, onCuePoint).
  • Редактируем и вставляем свои собственные метаданные и контрольные точки на примере бесплатного редактора richFLV. Оказывается все эти данные можно рассматривать как "видео-тэги", только в отличие от звуковых mp3-тэгов можно создавать не фиксированный набор, а гораздо больший и по количеству и по дополнительным возможностям.
  • Считываем контрольные метки и метаданные из flv-файлов, привязываем конкретные события к конкретной контрольной точке. Рассматриваем пример "интерактивного видео" и на его примере создаём свою видеопрезентацию с просмотром по паролю или в зависимости от действий пользователя переход на нужное время видеофайла… Создаём свой собственный дополнительный набор инструментов наподобие видеохостинга youtube. Применяем одну из хитростей - как вычислить адрес проигрываемого видеофайла через кэш браузера. Узнаём, что кроме flv-файлов во флэше можно проигрывать и файлы типа mp4.
  • Продолжаем знакомство с тем, какие ещё типы видеофайлов флэш может воспроизводить и редакторы метаданных для этих типов видеофайлов.
  • Считываем метаданные из mp4-файлов, в наш учебный видеоплакат вставляем "видеоползуночек-индикатор", добавляем прелоадер перед проигрыванием потокового видео.
  • Рассматриваем пример загрузки сопутствующей или дополнительной информации, контент в один и тот же видеоплеер, но на разных видеофайлах, используя метаданные, изученные ранее. Возможность реализации опций "Просмотр видео только по паролю" или "без реклам" и т.д., что вы поймёте и додумаете сами прослушав этот урок.
  • Синхронизация сопутствующего контента на разных видеофайлах через контрольные точки. Универсальный видеоплеер с кодами "на все случаи жизни"…

Модуль LC

Что такое LocalConnection ? Как осуществлять связь между разными флэшками, запущенных одновременно на одном и том же компьютере, скажем, в одной вкладке браузера. Как поставить защиту на флэшку так, чтобы она работала только на вашем сайте, если её, скажем, скачать и запустить локально или переразместить на другом сайте - то сработает ваша защита …

Из курса Вы узнаете:

  • Вводное объяснение зачем нужны эти LocalConnection. Создаём "флэш-передатчики" и "флэш-приёмники" и смотрим как одна флэшка передаёт данные, а другая их принимает.
  • Один "передатчик" может передавать по одному каналу одно сообщение за раз или несколько сообщений сразу, но, как оказалось, только в один и тот же "абонент-приёмник".
  • Один "передатчик" может передавать по одному и тому же каналу данные, но разным "абонентам", но эти "абоненты" могут находиться либо в одной "флэшке-приёмнике" либо в разных флэшках. Непонятно из описания? - ну так посмотрите урок…
  • По одному каналу связаны могут быть ТОЛЬКО ОДНА пара флэшек, если же надо одновременно связать несколько флэшек между собой - надо увеличивать количество каналов. Всё ещё смутное описание? А вы урок смотрели?
  • Теперь ситуация наоборот - несколько передатчиков, но один приёмник, получается какой-то "пылесборник информации".
  • Наглядно объясняется , что как ни исхитряйся, но на одном канале может работать только одна пара флэшек. Создаём канал связи и закрываем этот же канал - учимся как это делать и опытным путём выясняем особенности.
  • Зачем нужен LocalConnection.onStatus ? Аналогия о посланной СМС абоненту и статус о передаче - дошла посланная смс-ка до абонента или нет - объясняется наглядно и доступно…
  • Используем метод .domain() для определения на каком домене мы запускаем нашу флэшку.
  • Делаем защиту, чтобы ваша флэшка работала только на вашем сайте, а если её кто-то даже и скачает и попробует запустить её локально или разместить на "чужом" домене, то сработает ваша же защита.
  • Делаем реальный пример защиты, чтобы флэшка работала только на этом указанном в условии проверки домене и не работала ни локально, ни на любом другом домене…

Модуль FS - FullScreen

Изучаем FullScreen - полноэкранный режим, как сделать флэшку изменяемой в зависимости от изменения размеров не только самого флэш-плеера, но и от размеров браузера. Как делать "резиновые флэшки", как делать т.н.  параллаксные смещения… Узнаем как из флэша запускать приложения на локальном диске, как на этой основе создавать меню, например, для DVD и CD-дисков.

Из курса Вы узнаете:

  • Как реализовать в браузере переход в "полноэкранку", какие параметры для этого надо внести в html-файл.
  • Пробуем внедрять на web-страницу флэшку с полноэкранкой через разные web-редакторы. Убеждаемся, что иногда надо знать и javascript, но, даже если и не знакомы с этим языком программирования, то и тут можно "выкрутиться" и обойтись без этих навыков, просто используя возможности, заложенные в самих web-редакторах.
  • Зная в каком разрешении находится монитор пользователя, запустившего "вашу" флэшку у себя, мы подстраиваемся под пользователя, для этого надо научиться работать с System.capabilities. Тогда мы можем узнать и версию операционной системы пользователя и язык системы и проч…. На этой основе мы можем настраивать свою флэшку под эти "выведанные у пользователя" параметры под его вкусы и настройки.
  • Учимся как применяя Stage.alight, Stage.scaleMode, метод onResize() и проч. мы можем изменять флэшку изменяя размеры окна флэшплеера или браузера.
  • Делаем "резиновую флэшку" и вставляем её в html-страницу и открывая в браузере понимаем как делать "резиновый сайт".
  • Делаем мозаичный фон резинового сайта или флэшки, который самозаполняется в зависимости от размеров окна браузера или флэшплеера.
  • Делаем хитрый способ, при помощи которого мы можем запускать внешние файлы, например doc, xls, pdf и проч…изнутри флэша, при этом будет "само запускаться" соответствующее этому расширению файла приложение, установленное на компьютере, где запустилась эта самая "хитрая флэшка". Жаль только, что запуск внешних приложений возможен только из проектора (т.е. не из swf, а из exe-файла), но это вполне приемлемо для создания своих DVD или CD-менюшек.
  • Учимся делать сохранение требуемых пропорций мувика при изменении внешних размеров окна флэшплеера. Такое часто могли наблюдать, скажем, на широкоформатных ТВ с соотношением сторон 16:9, а показывают старые фильмы с соотношением 4:3 - как сделать чтобы изображение не было растянутым, не выглядело бы "толстеньким"?
  • Подгоняем размер флэшки под размер окна браузера - т.е. реализовываем принцип создания "резинового сайта".
  • Резиновым сайт можно сделать либо по горизонтали - тогда у нас будут интересные резиновые "хеадеры" и "футеры", либо только по вертикали - тогда можно сделать интересные, ну скажем, вертикальные резиновые баннеры…
  • На основе полученных понятий учимся создавать горизонтальную  панораму, которая полностью не влезает в окно браузера или окна флэшплеера, но появляется при движении курсора к краям наблюдаемого окна, типа как ведём наблюдение через перископ в подводной лодке.
  • Оживляем нашу панорамку неравными перемещениями её отдельных объектов - т.е. параллаксное смещение, что создаёт более правдоподобный и притягательный вид для пользователя-наблюдателя. Полученные коды можно применять не только для горизонтальных панорам но и вертикальных и для вертикально-горизонтальных, типа как при полёте в космосе…