Дострочное пересдача экзамена
|
Применение XML во Flash
- В конец текущего скрипта добавьте описание еще одной функции:
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, на котором, как вы помните, он был остановлен в ожидании ответа сервера.
- Выделите кнопку Submit и присоедините скрипт, вызывающий функцию:
on (release, keyPress "<Enter>") { loginSubmit(); }
При нажатии этой кнопки будет вызвана и выполнена функция loginSubmit(). Тем самым будет активирован процесс входа на сайт, описанный на предыдущих шагах.
Подведем итоги. При вызове функции loginSubmit() XML-данные отсылаются на сервер, а фильм перемещается к кадру с меткой waiting. По получении ответа с сервера автоматически вызывается функция loginResponse(), и фильм переходит к кадру с меткой login success либо login failed.
Теперь мы запрограммируем обработку проектом процесса регистрации.
- Переместите курсор воспроизведения к кадру с меткой register. В этом кадре на сцене расположены три текстовых поля (userName, email и password), а также кнопка. Выделите соответствующий этой метке кадр слоя Actions и введите в панели Действия следующую строку скрипта:
registrationURL = "http://вашдомен.com/projects/tfts/using_xml/AddUser.asp";
Это адрес ASP-страницы, которая будет принимать для обработки XML-документ с регистрационной информацией. После обработки информации будет возвращен результат. Будьте внимательны и укажите правильный путь к файлу, выложенному вами на сервер.
- В тот же кадр добавьте описание функции:
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. Эти данные должны быть введены пользователем в соответствующие текстовые поля. Скрипт-получатель проанализирует документ и извлечет эти данные.
- В конец текущего скрипта добавьте описание еще одной функции:
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.
- Выделите кнопку Submit и присоедините скрипт, вызывающий функцию:
on (release, keyPress "<Enter>") { registrationSubmit(); }
При нажатии этой кнопки либо клавиши Enter будет вызвана функция registrationSubmit(). Тем самым будет активирован процесс регистрации пользователя, описанный на предыдущих шагах. Таким образом, при вызове функции registrationSubmit() XML-данные отсылаются на сервер, а фильм перемещается к кадру с меткой waiting. По получении ответа с сервера автоматически вызывается функция registrationResponse(), и фильм переходит к кадру с меткой login success либо login failed.
- Командой Управление > Проверить фильм (Control > Test Movie) запустите тест проекта. Нажмите кнопку Register, затем введите информацию и подтвердите ее нажатием кнопки Submit. Закройте фильм, запустите вновь и попробуйте войти на сайт.
Мы с вами только что создали несложное приложение, иллюстрирующее применение объекта XML. Протестируйте фильм еще несколько раз; убедитесь, что вы поняли, как это запрограммировано и как работает.
- Закройте тестовый фильм и сохраните свою работу под именем loginRegister2.fla.
Теперь вы готовы приступить к созданию более продвинутых приложений, управляемых данными!