Опубликован: 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 и введите следующий скрипт:

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