Flash на практике часть-6 ~ Lesson flash

четверг, 7 февраля 2008 г.

Flash на практике часть-6

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


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


- Что у человека на рабочем столе, то у него и в голове! И если на столе куча хлама и беспорядок, то и в мыслях полный бардак.


Конечно, это несколько преувеличено, но почему-то, с тех пор я невольно стараюсь быть максимально аккуратным. Впрочем я, кажется отвлекся и ушел от темы сегодняшнего выпуска. А, о чем я хотел вам рассказать? … Мммм… А! О загрузке информации. (Видимо, нужно навести порядок в своих дискетах :-)


Обычно, любая дополнительная информация загружается отдельной стра-ницей в том же окне броузера или в окне фрейма. Мне очень часто приходят письма, в которых встречается один и тот же вопрос - Как, вставить страницу HTML в проект Flash. Отвечаю - никак! Flash изначально создавался как бро-узенезависимый модуль, позволяющий отображать содержимое проекта одина-ково вне зависимости от броузера, операционной системы, и компьютера. Если бы была возможность интегрировать окно броузера в сам Flash проект, то ка-кому броузеру отдать предпочтение? Тут, вмешиваются вопросы бизнеса и межкорпоративной политики. Если создавать, собственное средство просмотра, то опять возникнут проблемы совместимости отображения информации. В пя-той версии Flash сделана попытка конвертировать XML (не путать с HTML) непосредственно в проект, но это совсем другая тема для разговора.


Пока же, эту проблему (вставки HTML во Flash) обходят следующим обра-зом: создают сайт состоящий из фреймов, боковые части которого, содержат Flash, а основная - HTML страницу. Этот вариант подходит для сайтов содер-жащих большой объем текстовой информации или для модернизации старого сайта и упрощения управления (например, избавлении от JavaScript и как след-ствии простоты и надежности работы). Но уж если Вы решили создать, сайт целиком на Flash, то необходимо научится подгружать дополнительные проек-ты непосредственно в уже имеющийся.


Загрузка внешних данных: У нас есть возможность загрузить в работаю-щий проект не только дополнительный файл формата swf, т.е по сути еще один проект, но и информацию из текстового файла или сгенерированную cgi. При-чем в первых двух случаях, на не важно, позволяет ли сервер использовать соб-ственные сценарии, главное, что бы он поддерживал корректную работу Flash (о необходимых требованиях к серверу читайте в 22 выпуске).


Загрузка данных из текстового файла Создайте основной проект, в котором будет редактируемое текстовое поле для отображения загружаемой информа-ции и пара кнопок для управления загрузкой.


Рассмотрим подробнее команду Load. Откройте окно свойств Instance Properties для выбранной кнопки или Frame Properties для кадра, как это сделать не раз описывалось в начальных выпусках ActonScript. Из списка возможных действий укажите Load/Unload Movie и установите необходимые параметры: Action Load movie into location -загружает файл формата swf на определенный уровень или в указанный объект. Unload movie from location - удаляет загру-женный ранее фильм с уровня или из объекта. Load variables into location - за-гружает данные, причем данные могут хранится не только в текстовом файле, но и генерироваться сценарием cgi.


В поле URL указывается адрес, по которому находится swf, текстовый файл или сценарий cgi.


Location - здесь мы указываем "локацию", т.е. место назначение, куда бу-дет загружена информация: либо уровень - Level, либо объект - Target. Мы с Вами уже знаем, что сцена может иметь несколько слоев, каждый из которых содержит объекты-символы, которые в свою очередь могут находится на раз-ном уровне по отношению друг к другу, но есть еще один тип уровней - уровни фильма.


Уровни фильма Создавая проект, мы имеем дело с фильмом нулевого уровня. Когда загружаем внешний файл формата swf, то как бы кладем его над основным фильмом. Сколько дополнительных фильмов Вы загружаете, столько уровней нужно указывать. В том случае, если Вы укажите номер уже имеюще-гося уровня, то фильм находящийся в нем будет заменен на загружаемый. Фильм, загруженный на определенный уровень, полностью доступен для управления, только в данном случае, необходимо будет указывать не имя объ-екта, а уровень. Если Вы хотите управлять объектами загруженного фильма или его данными, то будет необходимо указывать полный путь к объекту или дан-ным, но об этом мы поговорим в следующем выпуске.


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


И последний параметр Variables - переменные: предназначен для опреде-ления способа передачи данных. Don't send - не отправлять. Send using GET - отправить методом Get (добавляет данные в конец адреса URL, используется, как правило, для совместной работы со сценарием cgi). Send using POST - от-править методом POST (удобен для отправки большого количества данных на-пример, обработка почтовых форм).


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


Задание данных в текстовом файле На самом деле особых премудростей здесь нет. Достаточно указать имя переменной и ее значение, если переменных несколько, они разделяются знаком & (амперсанд). Например: part=выпуск 25 учебного курса Flash&autor=Павел Г.Лапин вообще, согласно требованиям URLformencoded пробелы необходимо заменять на + или код %20, но как пока-зывает практика работы с Flash, даже обычный текст обрабатывается вполне корректно (в том числе и переводы строк). Также обрабатываются коды ANSII если задавать их после % в шеснадцатиричном виде.


В том файле, который нам необходим для работы, укажем любой текст в качестве значения переменной tablo и сохраним под именем text1.txt. Теперь создайте проект с текстовым полем и кнопками.


Предположим, что текстовому полю присвоено имя - "tablo", и при нажа-тии на первую кнопку в него будет загружена информация из файла text1.txt, тогда скрипт для первой кнопки будет: On (Release) Load Variables ("text1.txt", 0) End On


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


Для практического применения загрузки текстовых данных можно найти самое широкое и не только загрузка информации, но и создание различных сер-висных приложений. Ярким примером совмещения загрузки текста и внешнего клипа, служит MbA модуль, еще одним применением является возможность создания информационных панелей с ежедневно обновляемым содержимым (Вам достаточно заменять только текстовый файл).


Загрузка клипов Теперь, после того как мы разобрались с текстами, давай-те научимся загружать клипы. Конечно, можно загрузить фильм на определен-ный уровень, но в этом случае клип будет загружен в левый верхний угол и нам, нужно после загрузки заняться его позиционированием, что не совсем удобно, особенно если загружаемые клипы имеют один размер и должны заме-нять друг друга, а обычно именно так и происходит. Для этого необходимо, что бы у Вас был создан символ клипа, причем клип может содержать какое то на-чальное изображение или быть пустым, в последнем случае при помещении его на сцену установите необходимые размеры, задайте имя символа в Instance Properties (в нашем случае movie). Если имя загружаемого клипа будет, напри-мер, rings.swf то скрипт для кнопки вызывающей загрузку будет следующим: On (Release) Load Movie ("rings.swf", "/movie") End On


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



Домашнее задание Используя полученные знания создайте "Шкатулку Ра-дости". Уточнения к заданию: проект должен использовать загрузку текстовых данных из нескольких текстовых файлов, содержащих приличные анекдоты, и загрузку нескольких карикатур (не менее приличных, чем анекдоты). Как вари-ант - озвученный комикс журнал, каждая из частей, которого загружается до-полнительно в основной проект (проект в формате fla, подгружаемые части мо-гут быть swf).

Комментариев нет: