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

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

< Урок 11 || Урок 12: 1234567 || Урок 13 >
  1. В конец текущего скрипта добавьте описание еще одной функции:
function loginResponse () {
  var response = objToReceive.firstChild.firstChild.firstChild.nodeValue;
  if (response == "Login Correct") {
    _root.gotoAndStop("login success");
  } else if (response == "Login Incorrect") {
    _root.gotoAndStop("login failed")
  }
}

Эта функция будет вызвана, как только последний байт XML будет загружен в XML-объект objToReceive. Функция анализирует ответ, полученный с сервера.

Первая строка данной функции создает переменную response и присваивает ей значение, извлеченное из XML-документа, возвращенного сервером. Если помните, ответ страницы UserLogin.asp имеет такой формат:

<Login>
  <Message>Login Correct|Login Incorrect</Message>
</Login>

Таким образом, переменная response получит значение "Login Correct" либо "Login Incorrect". Затем в действие вступает оператор if, который, в зависимости от значения response, отправляет фильм к кадру с меткой login success либо login failed. Тем самым фильм покинет кадр waiting, на котором, как вы помните, он был остановлен в ожидании ответа сервера.

  1. Выделите кнопку Submit и присоедините скрипт, вызывающий функцию:
on (release, keyPress "<Enter>") {
  loginSubmit();
}

При нажатии этой кнопки будет вызвана и выполнена функция loginSubmit(). Тем самым будет активирован процесс входа на сайт, описанный на предыдущих шагах.

Подведем итоги. При вызове функции loginSubmit() XML-данные отсылаются на сервер, а фильм перемещается к кадру с меткой waiting. По получении ответа с сервера автоматически вызывается функция loginResponse(), и фильм переходит к кадру с меткой login success либо login failed.

Теперь мы запрограммируем обработку проектом процесса регистрации.

  1. Переместите курсор воспроизведения к кадру с меткой register. В этом кадре на сцене расположены три текстовых поля (userName, email и password), а также кнопка. Выделите соответствующий этой метке кадр слоя Actions и введите в панели Действия следующую строку скрипта:
registrationURL = "http://вашдомен.com/projects/tfts/using_xml/AddUser.asp";

Это адрес ASP-страницы, которая будет принимать для обработки XML-документ с регистрационной информацией. После обработки информации будет возвращен результат. Будьте внимательны и укажите правильный путь к файлу, выложенному вами на сервер.


  1. В тот же кадр добавьте описание функции:
function registrationSubmit () {
  XMLtoSend= "<Register><UserName>" + userName.text + "</UserName><Email>
     " + email.text + "</Email><Password>" + password.text + "</Password></Register>";
  objToSend = new XML(XMLtoSend);
  objToReceive = new XML();
  objToReceive.onLoad = registrationResponse;
  objToSend.sendAndLoad(registrationURL,objToReceive);
  _root.gotoAndStop("waiting");
}

Эта функция очень похожа на функцию loginSubmit(), описанную нами на шаге 6 – различия заключаются лишь в структуре данных XML и некоторых именах. Обратите внимание, что XML-документ содержит здесь три элемента данных, введенных пользователем – это userName.text, email.text и password.text. Эти данные должны быть введены пользователем в соответствующие текстовые поля. Скрипт-получатель проанализирует документ и извлечет эти данные.

  1. В конец текущего скрипта добавьте описание еще одной функции:
function registrationResponse () {
  var response = objToReceive.firstChild.firstChild.firstChild.nodeValue;
  if (response == "User Inserted") {
    _root.gotoAndStop("registration success");
  } else if (response == "User Exists") {
    _root.gotoAndStop("registration failed")
  }
}

Эта функция будет вызвана, как только последний байт XML будет загружен в XML-объект objToReceive. Функция очень похожа на функцию loginResponse(), описанную нами на шаге 7. Если помните, страница AddUser.asp дает ответ в таком формате:

<Register>
  <Message>User Inserted|User Exists</Message>
</ Register >

Таким образом, переменная response получит значение либо "User Inserted", либо "User Exists". Затем оператор if, используя это значение, отправляет фильм к кадру с меткой registration success либо registration failed.

  1. Выделите кнопку Submit и присоедините скрипт, вызывающий функцию:
on (release, keyPress "<Enter>") {
  registrationSubmit();
}

При нажатии этой кнопки либо клавиши Enter будет вызвана функция registrationSubmit(). Тем самым будет активирован процесс регистрации пользователя, описанный на предыдущих шагах. Таким образом, при вызове функции registrationSubmit() XML-данные отсылаются на сервер, а фильм перемещается к кадру с меткой waiting. По получении ответа с сервера автоматически вызывается функция registrationResponse(), и фильм переходит к кадру с меткой login success либо login failed.

  1. Командой Управление > Проверить фильм (Control > Test Movie) запустите тест проекта. Нажмите кнопку Register, затем введите информацию и подтвердите ее нажатием кнопки Submit. Закройте фильм, запустите вновь и попробуйте войти на сайт.

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

  1. Закройте тестовый фильм и сохраните свою работу под именем loginRegister2.fla.

Теперь вы готовы приступить к созданию более продвинутых приложений, управляемых данными!

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

Вот задание:

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

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

Добрый день.

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

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