Дострочное пересдача экзамена
|
Организация ввода и вывода данных во Flash
В этом уроке мы покажем вам различные способы общения Flash с внешними источниками (получения и передачи данных). Затем вы сможете воспользоваться полученными знаниями при построении несложного Flash-приложения, которое даст пользователям возможность "голосовать" за фильм, причем результаты голосования будут отображаться на экране, и все полученные сообщения будут сохраняться в журнале на вашем жестком диске.
Что будет изучаться
В этом уроке:
- Форматы данных, которые может воспринимать Flash
- Объекты, предназначенные для обмена данными
- Обмен данными с сервером
- Сохранение данных на жестком диске при помощи общих объектов
Приложение-журнал (мы создадим его в этом уроке) позволит добавлять новые записи, просматривать предыдущие и сохранять их.
Время выполнения
На выполнение этого урока требуется примерно один час.
Файлы урока
Файлы-носители:
Lesson11/Assets/poll.asp Lesson11/Assets/poll.mdb
Стартовые файлы:
Lesson11/Assets/poll1.fla Lesson11/Assets/journal1.fla
Законченные проекты:
poll2.fla journal2.fla
Бонус:
Lesson11/Bonus/highscoreList.fla
Источники данных и форматы
Источник данных – это объект или место, из которого Flash может загрузить внешние данные (то есть данные, не запрограммированные непосредственно внутри фильма). Например, Flash может загружать данные из обычного текстового файла – тогда этот файл будет считаться источником данных. Обмен данными – это акт получения данных из источника или пересылки данных из Flash другому приложению. В этом разделе вы узнаете о различных видах источников данных, а также об объектах и методах Flash, применяемых для взаимодействия с этими источниками в процессе обмена данными.
Любые данные, которые вы собираетесь загружать во Flash из внешнего источника, должны быть определенным образом структурированы – иметь определенный формат. Flash поддерживает следующие форматы:
- Строка URL. В этом формате данные представлены в виде пар имязначение. Переменные и их значения описываются текстовой строкой. Например, текстовая строка name=Jobe&website=http://www.electrotank.com&hairColor=brown описывает три переменные ( name, website, hairColor ) с соответствующими им значениями ( Jobe, http://www.electrotank.com, brown ). После загрузки этой строки Flash автоматически разделит ее на пары имя-значение, и эти переменные можно будет использовать так же, как переменные, запрограммированные в фильме. Здесь, как видите, знак равенства связывает имя переменной с ее значением, а знак амперсанд ( & ) указывает конец описания одной переменной и начало следующей. Число переменных, описываемых в таком формате, неограниченно. Учтите, однако, что в таком формате можно хранить лишь простые переменные, для хранения данных в виде массивов, объектов и т.п. такой формат не годится.
- XML. Этот популярный стандарт форматирования позволяет хранить данные в структурированном виде. Например:
<States> <State> <Name>North Carolina</Name> <Capital>Raleigh</Capital> </State> <State> <Name>Virginia</Name> <Capital>Richmond</Capital> </Sate> </States>
После загрузки документа XML во Flash данные из него извлекаются скриптом (который вы сами должны написать).
Примечание Подробнее о формате XML смотри Урок 12 – Применение XML во Flash.
- Общие объекты. В этом уроке мы расскажем о них подробнее; пока достаточно сказать, что общие объекты в чем-то сродни cookies: это объекты (данные), которые хранятся локально, на жестком диске пользователя. Что это означает? Пользователь запустил и просмотрел фильм (по сети либо в виде проектора). В ходе воспроизведения фильма формируются и сохраняются некие данные (имя пользователя, последний посещенный им раздел и т.п.). Впоследствии эти данные могут быть получены, когда пользователь вновь запустит фильм на том же компьютере. С помощью общих объектов можно хранить не только переменные, но данные любого типа – массивы, XML-объекты, любые другие объекты. Сохранение данных можно сделать "невидимым" для пользователя либо предоставить ему возможность самостоятельно инициировать этот процесс (с помощью кнопки и т.п.). На одном компьютере можно поместить несколько файлов с данными общих объектов – каждый фильм обычно (хотя и не обязательно) создает собственный файл.
Итак, вы познакомились с различными типами форматов данных, поддерживаемых Flash. Теперь рассмотрим источники, из которых Flash способен загружать данные.
- Текстовый файл. Flash может загружать данные из текстовых файлов (*.txt), содержащих данные в описанном выше формате строки URL. Данные из текстовых файлов загружаются с помощью методов loadVariables() или load() объекта LoadVars. В этом уроке мы с вами применим оба эти метода. Создать такой источник данных можно с помощью любого простейшего текстового редактора, вроде Windows Notepad или Apple SimpleText.
- Серверные скрипты. Это скрипты, размещаемые на страницах типа ASP, CFM, CGI или JSP и выполняемые сервером. Эти страницы, будучи невидимыми пользователю, генерируют форматированные данные (в виде HTML, XML и т.д.) и пересылают их по запросу. Например, представьте себе страницу под названием news.asp, которая не имеет визуального содержания, а содержит только выполняемый сервером скрипт. При посещении пользователем этой страницы скрипт динамически сформирует и передаст на его браузер HTML-страницу, содержащую последние новости (взятые, например, из базы данных). Серверные скрипты могут возвращать данные и в формате XML, и в виде URL-строки – а это значит, что Flash, взаимодействуя со страницей, содержащей такой скрипт, может загружать данные, созданные динамически, "на лету".
- Файлы XML. Файлы XML – это обычные текстовые файлы, содержащие данные в формате XML; такие файлы обычно имеют расширение *.xml.
- XML socket. Сокет-серверы – это приложения, выполняемые на сервере и обслуживающие одновременно нескольких пользователей, соединяя их друг с другом. Flash способен передавать и получать информацию через сокет, используя формат XML. О сокет-серверах и о том, как строить приложения с их применением, вы сможете узнать в Уроке 12.
- Общие объекты. Как уже говорилось, общие объекты применяются для создания файлов данных, хранящихся на жестком диске пользователя. Эти данные можно затем получить и использовать в фильме (этому посвящено последнее упражнение данного урока).
Совет. Во Flash встроена функция защиты, запрещающая загрузку данных через домены. Например, если фильм был загружен с www.site1.com, то попытка загрузить данные с www.site2.com не удастся.
Get и post
При работе с серверными скриптами существует два способа обмена данными между сервером и Flash: посредством GET или POST. Оба они используются, как в обычных HTML-страницах, так и во Flash, для передачи данных (переменных и их значений), введенных в форму, на сервер для обработки (специальные методы Flash для передачи данных мы обсудим в следующих упражнениях).
При посылке переменных с помощью GET пары имя/значение просто присоединяются к самой адресной строке URL. Например, если я (автор этой книги) желаю с помощью GET послать свое имя и адрес электронной почты скрипту, расположенному на странице register.asp, я указываю URL так: http://www.somedomain.com/register.asp?name=jobe&email=jobe@electrotank.com. Знак вопроса говорит скрипту и серверу, что все последующее есть описание переменных. Хотя GET проще в использовании, чем POST, он годится не во всех ситуациях, поскольку ограничен размером в 1024 символа.
Теперь посмотрим, как применяется POST. При передаче данных с помощью POST, переменные и значения содержатся внутри заголовка HTTP-запроса – то есть невидимы для пользователя. POST немного более удобный способ передачи, поскольку не ограничен числом символов.
Мы вернемся к теме применения GET и POST в упражнении к следующему разделу – "Применение объекта LoadVars".
Совет. Поскольку совместить GET и POST не всегда легко, скрипты обычно пишутся так, что они способны принимать либо GET, либо POST, но не то и другое