Книги, научные публикации Pages:     | 1 |   ...   | 5 | 6 | 7 | 8 |

F L A S 100 советов и рекомендаций профессионала O'REILLY С&ППТЕР Шам Бхангал F L A S H H A C K S Sham Bhangal O'REILLT Beijing Х Cambridge Х ...

-- [ Страница 7 ] --

Отложенная загрузка 5 секунд noflash.html Flash getURL() flash.html Рис. 11.2. Принцип работы анализатора поддержки Flash Сначала мы пытаемся выполнить Flash SWF с функцией getURLQ, которая загружает контент Flash в веб-странице flash.html. Если попытка окажется успешной, можно сделать вывод, что Flash Player установлен и нормально работает. Если же файл не выполнится, мы знаем, что поддержка Flash отсутствует в браузере. Но беспокоиться не о чем - если Flash не изменит текущую веб-страницу (то есть не загрузит flash.html методом getURL())( через пять секунд сработает отложенная загрузка, вследствие чего будет загружена HTML-страница noflash.html. Самое лучшее в данном решении - его полная независимость от JavaScript, браузера, платформы ОС или пользовательских настроек. Далее приводится более подробное описание: 1. Создайте новый документ Flash и включите следующий сценарий в кадр 1 главной временной диаграммы: getURLCflash.html". "_self"): 2. Сохраните файл под именем index.fla. 3. Опубликуйте документ командой File Х Publish Preview Х Default (HTML).;

Команда создает файлы index.html и index.swf в той же папке, в которой хранился файл index.fla. 4. Откройте файл index.html в текстовом редакторе по вашему выбору. 5. Секция должна выглядеть так:

charset=ISO-8859-l"> 394 < t i t l e>index Глава 11. Интеграция с браузером 6. Добавьте новый тег , выделенный далее жирным шрифтом: i ndex Создайте файл noflash.html. В нем может находиться: Х версия сайта, использующая только HTML;

Х HTML-страница, рекомендующая пользователю установить последнюю версию модуля Flash;

Х страница с предложением щелкнуть на кнопке для перехода на сайт загрузки модулей Macromedia Flash ( download. bgi?P1_Prod_Version=ShockWaveFlash). В любом случае страница должна объяснять, что поддержка Flash не обнаружена. Кроме того, на ней должна размещаться ссылка для загрузки Flash-версии сайта на случай, если модуль все же установлен. Ничто так не раздражает пользователя, как сообщения об отсутствии поддержки Flash только из-за того, что процедура автоматического обнаружения сработала неправильно. Не стоит бесцеремонно отправлять пользователя на сайт Macromedia для загрузки модуля Flash - предоставьте пользователю самостоятельно выбрать курс дальнейших действий. Поместите файлы flash.html и someFlashMovie.swf (Flash-сайт) в одну папку с файлом index.html. Чтобы провести локальное тестирование анализатора, откройте index.html в браузере. Если с тестированием возникнут проблемы, обращайтесь к файлам на сайте книги. Когда схема успешно заработает, загрузите файлы на веб-сервер и введите в браузере URL загруженной HTML-страницы - например, sniffertest/index.html. Чтобы эмулировать простейший браузер без каких-либо модулей, посетите сайт с эмулятором браузера, совместимого с HTML 3.2, идеальное место для тестирования анализатора поддержки Flash.

Возможные проблемы Иногда оказывается, что ранние версии Flash Player распознают функцию getURL(), поддерживаемую с Flash Player 2, но не воспроизводят весь контент Flash-сайта. Допустим, вы хотите использовать видео, поддерживаемое Flash Player версий 6 и выше, а у пользователя установлен Flash Player 5. Flash Player 5 поддерживает метод getURLQ, но не воспроизводит видео, внедренное в SWF-файл. В подобных случаях приходится проверять минимальную версию модуля Flash Player. Flash-ролик для проверки версии Flash Player должен быть SWF-файлом Flash Player 4 или Flash Player 5. Он проверяет версию Flash Player, а затем загружает Универсальный анализатор поддержки Flash другой SWF-файл (вероятно, в формате Flash Player 6 или Flash Player 7) с настоящим контентом. Для проверки версии Flash Player используется переменная окружения Flash $version. Эта переменная присутствует на вкладке Variables панели Debugger (рис. 11.3) при тестировании ролика в отладочном режиме.

Ш _global Nsme ^version [Value Рис. 11.3. Вкладка Variables панели Debugger с информацией о версии Flash Свойство $version поддерживается в Flash Player версии 4.0.11.0 и выше. Оно возвращает строку в форме платформа номер_версии, где платформа WIN, MAC или UNIX, а номер версии состоит из четырех чисел, разделенных запятыми, - основной и дополнительной версий, номера сборки и исправления (например, "WIN 6,0,21,0"). Не используйте более современные средства получения номера версии - такие, как функция getVersion(), поддерживаемая в Flash 5 и выше, или свойство System.capabilities.version (поддерживается в Flash б и выше), если у вас нет полной уверенности в том, что пользователь использует более новую версию модуля. Впрочем, если у пользователя установлена хоть какая-то версия Flash Player, скорее всего, это минимум версия 5, а по статистике ( свыше 90 % пользователей использует Flash Player 6 и более поздние версии. Так или иначе, $version, getVersionQ и System.capabilities.version возвращают одну и ту же строку (если, конечно, они поддерживаются в данной платформе). Основной нрмер версии для Мае и Windows хранится в строке $version со смещением 4 (пятый символ). Мы воспользуемся методом String.substr(), чтобы проверить, установлен ли у пользователя Flash Player версии 5 и выше. Если условие выполняется, текущая страница заменяется страницей flash.html. В противном случае выводится странице с сообщением об ошибке и предложением обновить Flash Player до версии 5 и выше: i f (Sversion.substr(4.1) >= 5) { getURU "flash.html", "_self");

} else { getURK "ol d_fl ash. html". "_sel f " ) :

Глава 11. Интеграция с браузером В Flash Player версий 1, 2 и 3 произойдет сбой, и сценарий просто продолжит воспроизведение SWF, но эти версии давно устарели и представляют менее 1% пользовательской базы. Самая замечательная особенность этого трюка состоит в том, что схему обнаружения не придется модифицировать для пользователей Flash Player 6, Flash Player 7 или будущих версий. Если вы хотите поддерживать платформы, для которых в строку версии включается префикс UNIX, извлеките основной номер версии после первого пробела в строке (не предполагая, что он является пятым символом).

Итоги Трюк, представленный в настоящем разделе, проверяет отсутствие Flash Player это проще, чем активное определение наличия Flash Player. Если Flash Player присутствует в системе, мы проверяем его версию (если потребуется). Вместо проверки Flash Player из JavaScript мы просто предлагаем Flash Player идентифицировать себя. Наш анализатор не зависит ни от поддержки JavaScript, ни от версии модуля Flash Player. Минимальным требованием является поддержка тега , обеспечиваемая браузерами версий 3.x и выше. Как максимум, требуется модуль Flash Player, способный опознать команду if и свойство $version (а именно Flash Player 4 и выше). Конечно, рассмотренное решение представляет собой трюк (если на то пошло, вся книга посвящена трюкам) и не обеспечивает абсолютной надежности. В зависимости от конфигурации пользователям Internet Explorer без Flash Player может быть предложено установить соответствующий элемент ActiveX. В то же время, в зависимости от временных характеристик (от того, сколько времени уйдет на вывод сообщения и ответные действия) пользователь может не попасть на страницу без Flash. Сценарии обнаружения модулей не бывают идеальными - у любого из них найдутся свои недостатки. Рассматривайте этот прием как лишнюю стрелу в своем колчане, а не как серебряную пулю. За информацией о более традиционных методах идентификации поддержки Flash обращайтесь к ресурсам, перечисленным во введении к настоящей главе.

Тестирование с разными версиями №88 Flash ТРЮК Тестирование приложений с разными версиями Flash Player без перехода на другой компьютер или ручной установки/удаления других версий. Многие клиенты требуют, чтобы их сайт оставался совместимым с предыдущей версией Flash Player (на момент написания книги - Flash Player 6) до тех пор, пока текущая версия (Flash Player 7) не достигнет пользовательской базы примерно в 90%. Столь широкое распространение обычно достигается через 18 месяцев после выхода новой версии.

Тестирование с разными версиями Flash Среда разработки Flash позволяет создавать контент, рассчитанный на предыдущие версии Flash Player, однако в ней не предусмотрены средства тестирования SWF в предыдущих версиях - по умолчанию предполагается, что контент будет просматриваться в последней версии Player (сейчас это Flash 7). К счастью, Macromedia следит за тем, чтобы старые SWF-файлы воспроизводились новыми версиями Flash Player так же хорошо, как в предыдущих версиях Flash Player. Хороший дизайнер тестирует свой продукт в новейшей версии Flash Player. Тем не менее, сайт также стоит протестировать в предыдущих версиях Flash Player, но такое тестирование создает немало проблем. Поскольку в любом браузере в любой момент времени может быть установлена лишь одна версия Flash Player, возможны четыре варианта: Х установите нужную версию Flash Player перед тестированием и восстановите более новую версию после его завершения;

Х проведите тестирование на нескольких компьютерах с разными версиями Flash Player. Во многих крупных организациях создаются специальные тестовые лаборатории, оснащенные множеством компьютеров с разными конфигурациями. Но если в вашей организации не хватает лишних компьютеров или места для их размещения, такое решение становится неприемлемым;

Х попросите друзей заняться тестированием. Идея отнюдь не плохая, но, скорее всего, ваши друзья - Flash-разработчики с последней версией модуля Flash, которым вряд ли захочется отягощать себя лишней работой;

Х воспользуйтесь превосходной программой Flash Plugin Switcher ( www.kewbee.de/FlashPluginSwitcher) Алекса Блума (Alex Blum), которая избавит вас от необходимости устанавливать или удалять модули Flash Player или элементы ActiveX. Чтобы не создавать себе лишних трудностей, в этом трюке будем использовать Flash Plugin Switcher (FPS). Логотип этой программы изображен на рис. 11.4. FPS заставляет браузер вернуться к предыдущей версии Flash Player. К сожалению, приложение работает только в системе Windows, поэтому на платформе Macintosh вам придется прибегнуть к другим способам.

FlashPfuginSwltcher Рис. 11.4. Логотип Flash Plugin Switcher На сайте Алекса используется немецкий язык, но само приложение и его справочные файлы написаны на английском. Macromedia поддерживает на своем сайте архив старых версий Flash Player (вплоть до Flash Player 2), предназначенный для тестирования: Глава 11. Интеграция с браузером По этому адресу размещена статья 14266 Archived Macromedia Flash Players available for testing purposes. Если Macromedia вдруг изменит URL, просто введите номер 14266 в поисковом поле на домашней странице Macromedia. Flash Plugin Switcher Распакуйте архив Flash Plugin Switcher и запустите приложение. Кнопка Help выводит информацию об установке модулей и элементов ActiveX. В окне приложения (рис. 11.5) выполняются следующие действия: 1) смена браузерного модуля или элемента ActiveX (поддерживаются Netscape и Internet Explorer);

2) смена версии Standalone Flash Player;

3) смена модуля, используемого режимом Test Movie в IDE для всех версий среды разработки Flash.

Рис. 11.5. Настройка конфигурации Flash Plugin Switcher Общая процедура смены модуля или элемента ActiveX выглядит так: 1) убедитесь в том, что браузер, Standalone Player или среда разработки (IDE) Flash, для которых вы хотите сменить модуль или элемент ActiveX, закрыт;

2) перейдите на соответствующую вкладку FPS (Browser, Standalone или Flash IDE);

3) удалите существующий экземпляр Flash Player, если соответствующая возможность присутствует на вкладке;

4) выделите и установите новый Flash Player. Просто, как все гениальное;

Настройка конфигурации по умолчанию 5) чтобы протестировать ситуацию с отсутствием модуля Flash Player, удалите текущий модуль или элемент ActiveX на вкладке Browser (см. шаг 3), но не устанавливайте другую версию.

Итоги Помните, что программа Flash Plugin Switcher существует на пожертвования пользователей. Если вы будете работать с ней, не забудьте поблагодарить Алекса через систему PayPal.

ТРЮК № Настройка конфигурации по умолчанию Изменение настроек Flash IDE по умолчанию в соответствии с текущей конфигурацией оборудования и/или особенностями рабочего процесса.

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

Изменение параметров по умолчанию Выполните команду Edit Х Preferences и введите новые параметры по умолчанию в диалоговом окне Preferences. Рассмотрим важнейшие параметры, находящиеся на разных вкладках: Х General. Для начала стоит обратить внимание на размер кэша отмены (рис. 11.6). В Flash MX 2004 его размер равен 1000 уровням, тогда как в Flash MX кэш ограничивается всего 100 уровнями. Если у вас свободная память (а у кого ее нет в наше время?), увеличьте размер кэша до 100. Editing. Хотя обновление Flash MX 2003 ( documentation/en/flash/mx2004/releasenotes.html#Update), выпущенное в ноябре 2003 года и обновляющее среду разработки до версии 7.0.1, решает многие проблемы исходной версии 7.0, у него есть свои недостатки. В частности, некоторые поля группы Drawing Settings остаются пустыми (не содержат значения по умолчанию), что мешает нормальной работе режимов Smooth, Straighten и Ink инструмента Pen. Если вы столкнетесь с этим явлением, задайте пустым параметрам значение Normal. В конце лета 2004 года по приведенному ранее URL должно появиться обновление до версии 7.2. Clipboard. Максимальный объем буфера составляет всего 250 Кбайт, чего явно недостаточно для копирования растров из Photoshop и других графических редакторов в Flash. Если вы часто редактируете растровые изображения в Photoshop и импортируете их в Flash, увеличьте буфер до 5000 Кбайт (то есть 5 Мбайт). В этом случае вместо сохранения графики в Photoshop с последующим импортированием командой File Х Import вы можете выполнить Х Х Глава 11. Интеграция с браузером операции копирования/вставки клавишами Ctrl+C и Ctr!+V (Windows) или SHJ+C и SИ+V (Mac). При занесении вставленных растров в библиотеку Flash присваивает им имена вида Bitmap n.

Gnr! e ea ?Х General- > ЧХХ U d levels: j W%k \ no !

ХХ>Х Х Printing options: f3 Ds be PostScript ia l Selection options: Щ Shift feet |3 Show tooltips Panel options: 3 Disable panel docking I TimeSne options: H Disable timeline docking E ] Span based selection If) Named anchor on Scene Highlight color: Ф Use this color й Use layer color I Font mapping default: jsans On launch: 0 show Start Page j | :. й New document й Last documents open jзs В Cancel Рис.

11.6. Вкладка General диалогового окна Preferences Х Warnings. На вкладке Warnings ничего менять не требуется. Все предупреждения лучше оставить включенными. Х ActionScript. В Flash MX 2004 и Flash MX Professional 2004 шрифт, используемый для отображения ActionScript, выбирается в раскрывающемся списке группы Text вкладки ActionScript. Ранние версии Flash такого выбора не давали - в них использовался стандартный шрифт Lucinda Console. Впрочем, шрифт Lucinda Console идеально подходит для вывода программного кода благодаря четкости и хорошим пропорциям, поэтому его стоит выбрать из раскрывающегося списка шрифтов.

Изменение параметров публикации В отличие от параметров окна Preferences, относящихся к среде разработки в целом, параметры публикации задаются (и сохраняются) отдельно для каждого Настройка конфигурации по умолчанию редактируемого документа FLA. Команда File Х Publish Settings вызывает диалоговое окно Publishing Settings, в котором чаще всего используются вкладки HTML и Flash: Х HTML. Среда разработки Flash генерирует HTML-страницу, в которую внедряется SWF-файл. Вкладка HTML управляет параметрами создания этой страницы (Flash MX 2004 и Flash MX Professional 2004 генерируют код XHTML, но файлу все равно присваивается расширение.html). Параметры вкладки HTML позволяют создать немасштабируемый ролик SWF, выровненный по центру окна браузера (см. трюк 90). Х Rash на этой вкладке выбирается версия компилятора ActionScript -ActionScript 1.0 или ActionScript 2.0. Компилятор ActionScript 2.0 обеспечивает жесткую типизацию, учитывает регистр на стадии компиляции и поддерживает новый синтаксис ООП (например, ключевое слово> (Мае) - на экране появляется контекстное меню Н для открытия новых файлов или сохранения файла, связанного с вкладкой.

402 ТРЮК Глава 11. Интеграция с браузером Выравнивание SWF по центру №90 без изменения масштаба Выравнивание немасштабированного контента в окне браузера без применения таблиц или CSS. Всем известно, что векторная графика (в отличие от растровой) не теряет качества при масштабировании, но почти на всех коммерческих Flash-сайтах используются относительно небольшие, немасштабированные SWF-ролики, выровненные по центру браузера. Это объясняется следующими причинами: Х Быстродействие Flash зависит от количества пикселов, изменяющихся с каждым кадром. Умеренные размеры области вывода SWF и отказ от масштабирования обеспечивают быструю работу сайта с более или менее постоянной частотой смены кадров. Ролики не рекомендуется масштабировать на весь экран (особенно до размеров 1280 х 1024 и выше), потому что при таких больших размерах области вывода Flash будет работать слишком медленно.

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

Х Уменьшение размера сцены уменьшает объем графических данных, а это, в свою очередь, уменьшает нагрузку на канал связи. Слушатель Stage.onResize() даже позволяет перехватывать события изменения размеров и выполнять нестандартное масштабирование или позиционирование отдельных элементов без применения единых правил масштабирования на все случаи жизни. Начинающие пользователи Flash часто задают один и тот же вопрос: Как построить немасштабируемый SWF-ролик, который всегда выводится в центре окна браузера? Ни один из готовых шаблонов, вызываемых командой File Х New Х Templates, не предоставляет такой возможности. Даже некоторые опытные пользователи применяют таблицы HTML или форматирование CSS. Тем не менее, проблема решается гораздо проще. Выполните команду File Х Publish Settings, выберите в списках Horizontal и Vertical из группы Flash Alignment значение Center, а в списке Scale - строку No scale (рис. 11.8). К сожалению, в этом способе возможно отображение скрытого контента, находящегося вне сцены. Проблема будет решена в следующем трюке, посвященном форматированию CSS (см. трюк 91).

Выравнивание по центру с применением CSS Current profiled Default Foi mats Flash HM \ TL Template: |Flash Only 0 Detect Flash Version Dimensions: ;

Percent Width: Height;

X | 100 | percent Щ} Display menu 0 Device font ivj Playback: ED Paused at start [3 Loop Quality: W d w Mode: io n HM alignment: TL Scale:

ХХ:Х:ХХХ'Х'Х - -^:

-::/Д^Г Flash alignment:

: : ;

High Window v Default ХХ;

.

.

.

.

Х"Х :'Х'Х.

Х Х.

.

;

:

.

Х:

Х :

Х Х Х.

.

No scale Х Х Х Х :

:

-.' :

| / ;

.

Х Х ХХХХ:

:

:

l Хtorizontal Vertical.

Х Х Х,.

.

:;

Х:

Х Center v!

Center.. i l l.

:ХХ:Х: [;

.;

Х Х;

.' :

:

*Х:;

;

?:

3show w a r n i ng messages :|.Publish [ c a n c e l O K Рис, 11.8. Диалоговое окно Publish Settings Выравнивание по центру №91 с применением CSS ТРЮК Центрирование немасштабируемого SWF-ролика может привести к случайному отображению контента, находящегося вне сцены. Применение XHTML и XSS дает отличный результат без отображения скрытого контента и нарушения стандартов. Одна из самых распространенных проблем, с которыми сталкиваются неопытные дизайнеры, - выравнивание SWF-ролика по центру окна браузера (см. трюк 90). Далее описаны некоторые способы решения этой задачи и трюки, необходимые для того, чтобы заставить их работать лучше.

Глава 11. Интеграция с браузером Параметры публикации Для примера возьмем SWF-ролик, показанный на рис. 11.9.

О : V ;

..

..Х _ ХХ Рис. 11.9. Тестовая таблица Тестовая таблица закрывает сцену, а четыре угловые фигуры (два круга с вписанными квадратами и два квадрата) находятся за пределами сцены. Светлосерая рамка тоже не входит в сцену. Если масштабировать сцену по размерам окна браузера (выполните команду File Х Publish Settings Х HTML, выберите в списке Dimensions значение Percent), то четыре внешние фигуры не будут видны. Однако у такого решения есть серьезный недостаток. Если пользователь запустит браузер в большом окне, то большой размер полученного SWF-файла существенно замедлит работу сайта. Если выбрать в списках Horizontal и Vertical строку Center, а в списке Scale - строку No Scale (см. рис. 11.8 из предыдущего трюка), центровка будет выполнена так, как показано на рис. 11.10. SWF-ролик выровнен по центру, но в окне также отображается контент, находящийся за пределами сцены. Иногда это не создает проблем, но многие сайты содержат скрытый контент, находящийся полностью или частично вне сцены. При создании анимаций находящийся вне сцены контент обычно скрывается для организации панорамирования и наплывов. Посмотрите на рис. 11.11. Перед вами фрагмент анимации, созданной Адамом Филипсом, с которым мы работали над некоторыми проектами Выравнивание по центру с применением CSS 40** Рис. 11.10. Тестовая таблица, выровненная по центру без масштабирования 1 l I i Щ шI Ш Х им v31 III;

| jj1 Iliili H Щ i 1 i 1 I 1H ^Ш^^^яИ HI P Рис. 1 1. 1 1. SWF с отображением контента, находящегося вне сцены Глава 11. Интеграция с браузером В принципе, SWF можно отцентровать в браузере с применением параметров Publish Settings, но у такого решения есть серьезный недостаток: контент, находящийся вне сцены, также будет видимым. Наша цель - скрыть весь контент, находящийся за пределами сцены. Как видно из рис. 11.12, на том же кадре итоговой анимации отображается только контент, находящийся на сцене. Задача решается небольшим объемом HTML-кода.

Рис. 11.12. В итоговом варианте SWF отображается только сцена Выравнивание по центру с использованием H M TL В Flash Player 6 и ранее для центровки SWF применялись таблицы HTML. Flash MX генерирует HTML-код, в котором SWF внедряется в веб-страницу тегами и . Остается лишь заключить эти два тега в простой тег с атрибутами горизонтального (align="center") и вертикального (valign="middle") выравнивания. В следующем листинге внесенные изменения выделены жирным шрифтом: \ 7 F L A S 100 советов и рекомендаций профессионала O'REILLY С&ППТЕР Шам Бхангал F L A S H H A C K S Sham Bhangal O'REILLT Beijing Х Cambridge Х Farnham Х Kbln Х Paris Х Sebastopol > Taipei Х Tokyo F L
Выравнивание по центру с применением CSS