выпуск 22
Flash на практике часть-3 & Спецвыпуск-2
Сегодняшний выпуск несколько отличается от
предыдущих. В качестве учебного материала ответ на многочисленные письма с
просьбой рассказать об обмене данными между Flash-проектом и JavaScript. Вполне
вероятно, что для большинства подписчиков, этот материал будет сложен.
Также хочу предупредить всех читателей рассылки,
что следующий выпуск выйдет через 10-15 дней, как только у меня будет свободное
время после сдачи квартального отчета. Это вовсе не означает, что я не стану
отвечать на Ваши письма, просто не смогу ответить в тот же день. Как всегда жду
от Вас выполненных работ.
Часто приходят письма, в которых авторы просят
уточнить особенности текстовых полей.
Итак, следует запомнить простое правило:
В проектах для публикации в интернет, файл формата
swf, можно использовать любые шрифты, но если Вы посылаете файл кому-то,
например заказчику или мне, в формате fla, то нет гарантии, что на другом
компьютере будут те же шрифты. В случае с заказчиком необходимо приложить сам
шрифт или разбить все тексты в проекте (см. 11-й выпуск.).
При использовании редактируемых текстовых полей
предназначенных для ввода пользователем или вывода динамической текстовой
информации, обязательно применяйте только стандартный шрифт, например Arial Cyr.
В противном случае, нормально отображаться будет только латиница.
Если Вы решите использовать текстовые поля и
расположите их с наклоном, например, для лучшего решения дизайна, то они
отображаться в проекте не будут.
Встречаются и вопросы подобного рода -
"Сделал фильм. У меня показывает нормально, а у друга ползет. Почему?"
Реальная скорость работы фильма зависит от производительности компьютера.
Чем сложнее фильм, чем больше в нем движения и сложных эффектов (особенно масок),
тем большие вычисления приходится производить процессору, и на компьютерах с
меньшей скоростью возможно торможение. В случае, когда необходимо обеспечить
совмещение действия и звука, необходимо применять синхронизацию, о чем
обязательно будет рассказано в будущих выпусках.
Следующий вопрос: - "У вас в конце каждого выпуска
реклама о регистрации собственного сайта. И в качестве основного плюса -
совместимость сервера с Flash. Разве для Flash сайтов нужна настройка?"
Flash действительно работает независимо от
сервера, но особенность некоторых браузеров такова, что им кроме самого файла
требуется знать его тип MIME, который передается вместе с файлом. Именно это я
и имел в виду. Если администратор не прописал MIME, то при просмотре сайта с
Flash броузером Netscape возможны проблемы (вплоть до повисания системы).
Любой администратор без проблем прописывает необходимые данные (они начинают
работать для всех сайтов сервера).
Для настройки сервера необходимо прописать или
проверить наличие типа MIME (application/x-shockwave-flash) и расширение файлов
Flash (.swf) это все, что требуется для нормальной доступа к Flash страницам.
Кто использует MbA модули, тоже могут прислать свою
рекламную сборку (кнопку 88х31 и текстовое описание) и Ваш сайт будет включен в
рекламный набор моего сайта. Если по каким-то причинам не знаете, что такое MbA
модуль, можете познакомится с данной технологией на странице
"Murmik's button Advertising".
Заканчивая часть спецвыпуска, придется поговорить о
грустных для меня вещах.
То, что меня постоянно подписывают на различные
рекламные рассылки, я уже привык и просто не обращаю на это внимание. Началась
очередная волна "писем счастья и богатства". Дорогие мои "доброжелатели"
представляете, если я пошлю копию письма не 10-15 человек, а сразу всем
подписчикам рассылки? Вот счастья-то мне привалит :-))))
На такие письма обижаться глупо. В конце-концев у
всех есть свои слабости, но вот письма другого рода меня сильно огорчают. Я
получил в подарок целую "упряжку лошадей". От простых коней в формате ворда с
трехстраничными уговорами обязательно открыть данный документ, до попыток
совратить меня картинками для взростых дядь. Единственно чего можно добиться
подобными презентами, это прекращение существования данной рассылки. Скажу
сразу, что особо погулять по сети за мой счет не очень получится. Я как и
большинство читателей выпусков плачу за интернет из своего кармана, и на счету
моего провайдера не бывает суммы более 10 у.е.
Тех, кто хочет узнать обо мне
больше, могут посетить "Murmik's page", думаю большинство вопросов решаться
сами собой.
Учебная часть:
Большинство задач решаемых раньше JavaScript с
гораздо большим успехом выполнит Flash. При этом на конкретный проект будет
затрачено меньше времени и решаются проблемы графической совместимости в разных
броузерах. Но иногда Web-мастеру проще часть задачи переложить на JavaScript
или, например VB. В этом случае возникает необходимость организовать обмен
данными между Flash и собственно скриптом на странице. Давайте посмотрим, каким
образом можно добиться желаемого результата.
Обмен данными между Flash и JavaScript:
Решить проблему взаимодействия данных, поможет
действие FS Command. Реализация действия основано на стандартной возможности
обмена данными по единому потоку. Рассмотрим это на конкретном примере.
Создадим проект, состоящий из одного кадра, в котором находятся два текстовых
поля и кнопка, при нажатии на которую, текст с одного поля копируется в другое.
Но при этом, происходит не простое присвоение данных текстовому полю, а их
передача броузеру и последующее присвоение значению второго текстового поля
с использованием JavaScript. Подобным образом можно обеспечить передачу и
обработку данными между Flash-фильмами находящимся на одной странице или в
разных фреймах.
Предположим, что у нас два текстовых поля с именами
text1 и text2. Создадим необходимый скрипт для кнопки:
- Выберите действие FS Command
- В поле Command вводим имя команды, которое будет использоваться для идентификации
- В поле Arguments указываем передаваемые данные
Следует заметить, что в оба поля можно вводить как обычную информацию, так и
генерируемую динамически.
Существует еще выпадающее меню For standalone player, которое используется
для управления Flash проектором при публикации в независимом приложении.
fullscreen - в полный экран при значении True
allowscale - включает режим изменения размера при True
showmenu - разрешить показ меню при нажатии правой кнопкой мыши
(True)
guit - выход и закрытие проектора
exec - запускает внешнее приложение
в нашем случае скрипт будет следующим:
On (Release)
FS Command ("dates", text1)
End On
Необходимо немного поработать с html кодом страницы.
В тег EMBED добавьте имя проекта например
NAME="FlashToJava"
Оно будет использоваться для идентификации в скрипте
броузера. Кроме того, нужно включить обмен данных для Flash проекта (в том же теге)
swLiveConnect="true"
Обмен данных с JavaScript происходит с помощью
функции Name_DoFSCommand, где Name имя присвоенное Flash проекту. Для
выполнения задачи поставленной в начале описания потребуется следующий скрипт:
<SCRIPT LANGUAGE="JavaScript">
function FlashToJava_DoFSCommand(command, argument) {
if (command=="dates") document.FlashToJava.SetVariable("text2", argument)
}
</SCRIPT>
Корректная обработка данного скрипта происходит в Netscape, в моем EI5 обмен данными стал возможен, только после
добавления дополнительного скрипта на VB:
<SCRIPT LANGUAGE=VBScript>
Sub FlashToJava_FSCommand(ByVal coms, ByVal arg)
call FlashToJava_DoFSCommand(coms, arg)
end sub
</SCRIPT>
Но сюрпризы различия броузеров на этом не заканчиваются! Русский текст передается только
в EI, поэтому применять обмен данными без дополнительных ухищрений реально для числовых и англоязычных данных.
Домашнее задание:
Основываясь на материале предыдущих выпусков,
проиллюстрируйте знаменитое историческое событие ставшее в мире Интернет частым
явлением "Преподнесение в дар Троянского коня"
Итоги задания 20-го выпуска:
Пока пришла только одна работа. Ее автор Максим
Чубин, решивший на этот раз довести автора рассылки до инфаркта :-)
Павел Г.Лапин
E-mail: murmik@mail.ru
Россия Мурманск
|