logo search
43121

Глава 20. Работа с внешними приложениями

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

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

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

Работа с внешними приложениями

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

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

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

Потом появилась Windows 3.0, за ней - 3.1, 3.11, 95... Компьютеры существенно прибавили в мощности, а программисты наконец-то поняли, что принцип "один компьютер - одна программа" не так уж и хорош. Многозадачная операционная система MS Windows вытеснила старую однозадачную MS-DOS. И каждый пользователь достаточно мощного компьютера смог уподобиться Юлию Цезарю.

Многозадачность принесла еще одну выгоду: теперь разные приложения могли взаимодействовать друг с другом, обмениваясь данными. Первой попыткой реализовать такой обмен данными был DDE (Dynamic Data

Exchange - - динамический обмен данными), реализованный еще в Windows 3.0. Данные передавались от приложения к приложению небольшими порциями и весьма неспешно, да и надежность DDE была невысока. Вторая попытка - OLE (Object Linking and Embedding - связывание и внедрение объектов) - была несравнимо удачнее и применяется до сих пор, став частью технологии COM (Component Object Model - компонентная объектная модель). Существует еще несколько способов передачи данных от приложения к приложению, но они не столь распространены.

А потом получили широкое распространение компьютерные сети, и в мир пришел Его Величество Интернет. Появились серверные приложения, работающие на серверах, не имеющие пользовательского интерфейса и общающиеся с пользователем по сети. Этим они принципиально отличаются от клиентских приложений, работающих на компьютерах пользователей и взаимодействующих с пользователями напрямую. Самые распространенные и наверняка вам знакомые серверные программы - это сервер почты, Web-сервер, FTP-сервер и сервер баз данных.

Пользователь никогда не работает с серверной программой напрямую, а вместо этого использует особые клиентские программы, называемые клиентом или клиентской частью соответствующего сервера. Такие программы формируют запрос, основываясь на введенных пользователем данных, и отправляют его серверному приложению. В ответ последнее возвращает результат обработки этих данных, который клиентское приложение выдает пользователю. Так, для Web-сервера клиентом является Web-обозреватель, а для сервера данных клиентом может выступать любая современная настольная СУБД.

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

Управление внешними приложениями

Здесь мы выясним, как из приложения Flash можно управлять другими программами, установленными на том же компьютере. Также мы узнаем, как можно управлять проигрывателем Flash, в котором работает это приложение.

Загрузка Web-страницы

Для загрузки и отображения Web-страницы вам следует воспользоваться действием getuRL. Первым параметром этого действия передается интернет-адрес страницы, которую нужно отобразить, в строковом формате. Вторым параметром может быть передано имя окна Web-обозревателя или фрейма, в котором будет показана страница.

Управление проигрывателем Flash

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

Взаимодействие со сценариями JavaScript

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

Использование внешних данных

Мы выяснили, каким образом приложение Flash может управлять внешними программами (а также как внешние программы могут управлять этим приложением). Теперь пришла пора выйти за пределы клиентского компьютера и обратиться к серверным программам.

Как вы уже знаете, серверные программы работают на удаленных компьютерах под управлением программы Web-сервера, с пользователями напрямую не взаимодействуют, а "общаются" с ними только по сети. По сети они принимают от пользователей запросы и так же высылают им ответы: тексты писем, счета, данные из баз и пр. Стало быть, клиентские приложения, "общающиеся" с серверными, должны уметь преобразовывать запросы пользователей в поддерживаемый серверными программами формат. Ну и, конечно, они должны выполнять обратное преобразование, иначе пользователь ничего не сможет разобрать в возвращенном результате.

Flash, как вы уже знаете, делает за вас очень много работы. Он сам кодирует данные, чтобы их можно было нормально передать по протоколу HTTP (HyperText Transfer Protocol - протокол передачи гипертекста), используемому при передаче Web-страниц от сервера к клиенту. (Протоколом называется набор правил обмена информацией по сети, которых должны придерживаться приложения.) Вам остается только правильно сформировать нужный запрос и получить и обработать ответ.

Использование данных XML

Интернет-общественность нашла себе новую игрушку. Это широко разрекламированный язык описания данных XML (extensible Markup Language -расширяемый язык разметки), который служит для структурирования данных. Считается, что он должен покончить с неразберихой, связанной с существованием множества несовместимых форматов хранения данных, привести всю информацию, накопленную трудолюбивым человечеством, в строгий порядок. Сбудутся ли эти прогнозы, оправдает ли XML надежды страждущих? Кто знает...

Сейчас мир охватила мода на XML. Очень и очень многие программы спешно обзаводятся поддержкой этого языка, невзирая, нужна она там реально или нет. Не стал исключением и Flash. Уже предыдущая, пятая версия поддерживала данные, отформатированные с использованием этого языка. A Flash MX эту поддержку развил и углубил.