Опубликован: 04.11.2006 | Уровень: специалист | Доступ: платный
Урок 12:

Применение XML во Flash

< Урок 11 || Урок 12: 1234567 || Урок 13 >

Посылка XML

Объект XML дает возможность отослать XML-данные по указанному адресу. Также имеется возможность, послав XML, сразу же загрузить результаты его обработки.

Для отсылки XML нужно воспользоваться методом send(), указав необходимый URL. Например:

myXML = new XML("<Message><Text>Hi!</Text></Message>");
myXML.send("http://somedomain.com/somedestination.asp");

Чтобы послать XML и сразу получить ответ, следует применить метод sendAndLoad() объекта XML. При этом необходимо указать XML-объект, содержимое которого нужно отослать, URL-адрес места назначения, а также объект XML, в который должно быть загружено ответное послание. Как и в случае с методом load(), здесь событие onLoad поможет узнать, что ответ уже загружен. Вот пример:

URL = "http://www.electrotank.com/projects/tfts/using_xml/UserLogin.asp";
function init () {
  trace(objToReceive);
}
xmlToSend = 
"<Login><UserName>Jobem</UserName><Password>hayes</Password></Login>";
objToSend = new XML(xmlToSend);
objToReceive = new XML();
objToReceive.onLoad = init;
objToSend.sendAndLoad(URL, objToReceive);

Данный скрипт создает объект XML ( objToSend ), содержащий информацию для входа на сайт, и затем отсылает его на URL, ожидая получить ответ. Как только этот ответ будет полностью загружен в принимающий XML-объект ( objToReceive ), вызывается функция init.


Итак, вы кое-что узнали о формате XML, а также об объектах XML, их методах и свойствах. Пора применить знания на практике! В этом разделе урока мы с вами создадим несколько простых XML-документов, выполним несложный анализ и применим метод sendAndLoad() – все это в рамках Flash-приложения, которое будет служить экраном регистрации пользователей.

Flash-файл, над которым мы будем работать в этом разделе, взаимодействует с ASP-страницами. Чтобы полностью построить и протестировать этот файл, вам понадобится доступ к серверу, который сможет выполнить ASP-скрипты (как правило, это серверы под управлением Windows). Для тестирования файлов этого упражнения вам нужно выложить на Windows-сервер, в один каталог, два ASP-файла (AddUser.asp и UserLogin.asp) и файл базы данных MS Access (XMLExample.mdb). Эти файлы вы найдете в папке Lesson12/Assets.

Страница AddUser.asp воспринимает XML-документы, имеющие следующую структуру:

<Register>
  <UserName>jobem</UserName>
  <Email>jobe@electrotank.com</Email>
  <Password>secret</Password>
</Register>

В случае правильной регистрации пользователя страница AddUser.asp возвращает следующий результат:

<Register>
  <Message>User Inserted</Message>
</Register>

Если же пользователь с таким именем уже существует, будет возвращен такой результат:

<Register>
  <Message>User Exists</Message>
</Register>

Страница UserLogin.asp воспринимает XML-документы, имеющие следующую структуру:

<Login>
  <UserName>jobem</UserName>
  <Password>secretword</Password>
</Login>

Если информация верна, то страница возвращает следующий результат:

<Login>
  <Message>Login Correct</Message>
</Login>

Если информация неверна, будет возвращен такой результат:

<Login>
  <Message>Login Incorrect</Message>
</Login>
  1. Откройте файл LoginRegister1.fla из папки Lesson12/Assets.

Все необходимые кадры, текстовые поля и кнопки в этом файле уже созданы. Файл имеет четыре слоя: в слое Actions мы будем размещать все наши скрипты, слой Labels содержит метки кадров, в слое Assets находятся текстовые поля и кнопки, а слой Background содержит общее графическое оформление.

  1. Откройте панель Действия, выделите кадр 1 введите действие stop().

Этим мы предотвращаем автоматическое воспроизведение фильма.

  1. При курсоре монтажного стола, установленном на кадр 1, выделите кнопку Login и введите в панели Действия такой скрипт:
on (release) {
  _root.gotoAndStop("login");
}

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

  1. При курсоре монтажного стола, установленном на кадр 1, выделите кнопку Register и введите в панели Действия такой скрипт:
on (release) {
  _root.gotoAndStop("register");
}

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

  1. Переместите курсор монтажного стола к кадру с меткой Login. Здесь на сцене имеется два текстовых поля – userName и Password, а также кнопка. Выделите соответствующий этой метке кадр слоя Actions и введите в панели Действия следующую строку скрипта:
loginURL="http://вашдомен.com/projects/tfts/using_xml/UserLogin.asp";

Это будет адрес ASP-страницы, принимающей XML-документ с данными для входа на сайт. Скрипт на этой странице проанализирует посланный ему документ и вернет ответ – верна ли введенная пользователем информация. Не ошибитесь, здесь вы должны правильно указать адрес к файлу, который вы выложили на сервер.

  1. В этот же кадр добавьте описание функции:
function loginSubmit () {
  xmlToSend = 
"<Login><UserName>"+userName.text+"</UserName><Password>"+password.text+"</Password></Login>";
  objToSend = new XML(xmlToSend);
  objToReceive = new XML();
  objToReceive.onLoad = loginResponse;
  objToSend.sendAndLoad(loginURL,objToReceive);
  _root.gotoAndStop("waiting");
}

Эта функция будет вызываться при нажатии кнопки Submit (мы потом присоединим к ней соответствующий скрипт). В первой строке функции используются значения, введенные в текстовые поля userName и password. Они вставляются в текстовую строку данных XML-формата; эта строка становится значением переменной xmlToSend. Затем мы создаем новый объект XML с именем objToSend и передаем ему только что созданную строку текста в XML-формате. Мы должны это сделать, поскольку метод sendAndLoad() работает только с XML-объектами – мы не можем применить его непосредственно к строке. Далее мы создаем новый объект под именем objToReceive. В этот XML-объект будет загружаться ответ ASP-страницы. Далее мы, используя событие onLoad, указываем, что по завершении загрузки данных в объект objToReceive должна быть вызвана функция loginResponce() (эту функцию мы создадим на следующем шаге).

Следующим действием вызывается метод sendAndLoad() с указанием передающего объекта, URL назначения и объекта, в который должен быть загружен ответ. Наконец, последнее действие перемещает монтажный стол к кадру с меткой waiting, информируя пользователя о том, что данные переданы и ожидается ответ сервера.

< Урок 11 || Урок 12: 1234567 || Урок 13 >
Евгений Стародубцев
Евгений Стародубцев

Вот задание:

7. Открыв панель Действия (Actions) и установив ее в Экспертный режим(Expert Mode), выделите кадр 1 слоя Actions и введите следующий скрипт:

Галина Кузнецова
Галина Кузнецова

Добрый день.

Можно ли получить среду Flash для обучения бесплатно?

Евгения Дегтяренко
Евгения Дегтяренко
Украина, Запорожье
Анна Елисеева
Анна Елисеева
Россия, Великий Новгород, Ногородский государственный университет имени Ярослава Мудрого, 2003