Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ActionScript 2.0 ЛР.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.88 Mб
Скачать

Текст-ссылка

Для того, чтобы сделать метку-ссылку Регистрация, мы добавим новое динамическое текстовое поле и отформатируем его с помощью HTML-кода. Чтобы использовать эту возможность, нужно включить для текстового поля режим Render Text as HTML (кнопка на панели Properties).

Напомним, что все, что находится в блоке

<U>...</U>

подчеркивается, а содержимое блока

<A HREF='xxx'>...</A>

становится ссылкой на документ с именем xxx.

Для того, чтобы перейти на нужный кадр внутри документ, мы используем специальный протокол asfunction:

<A HREF='asfunction:gotoAndStop,register'>...</A>

Это означает, что после щелчка на этой метке выполняется команда

gotoAndStop ( "register" );

Заметим, что если бы мы работали со статическим текстом, можно было бы просто добавить текст

asfunction:gotoAndStop,register

в поле ссылки справа от значка на панели Properties. Однако такая ссылка не подчеркивается.

  1. Создайте динамическое текстовое поле Регистрация. Настройте его шрифт, присвойте имя regText и разместите справа от кнопки. Включите режим Render Text as HTML (кнопка на панели Properties). Добавьте к кадру 1 слоя Компоненты код

regText.htmlText = "<U><A HREF='asfunction:gotoAndStop,register'>" + "Регистрация</A></U>";

  1. Проверьте работу ссылки.

Поскольку мы используем текст с HTML-форматированием, нужно записывать его не в свойство text, а в свойство htmlText. Слово Регистрация подчеркивается, при щелчке на нем выполняется переход на метку register.

Работа с базой пользователей

Мы будем хранить базу пользователей как разделяемый объект с именем userBase. Внутри этого объекта массив base хранит структуры (объекты с несколькими полями) с информацией о пользователях. Поле name каждого элемента обозначает имя, а поле pass — пароль.

В начале работы фильма создадим ссылку v на объект userBase. Написанная ниже функция findUser принимает имя пользователя как параметр и возвращает его номер в базе или -1, если он не найден (база еще не создана или пользователь не регистрировался).

  1. Выделите кадр 1 слоя Программа и добавьте код

v = SharedObject.getLocal("userBase");

function findUser ( name ) {

if ( v.data.base == undefined ) return -1;

users = v.data.base;

for(i=0; i<users.length; i++)

if ( users[i].name == name ) return i;

return -1;

}

Если база не создана, значение v.data.base будет равно undefined, и функция возвращает -1. Для массива вводится имя users (чтобы сократить запись) и перебираются все его элементы. Если имя пользователя совпадает с именем в одном из элементов массива, возвращается его номер. Если весь массив проверен и совпадений не обнаружено, возвращается -1 (последняя строчка в функции).

Напишем еще одну функцию для проверки правильности ввода имени и пароля.

  1. Добавьте к кадру 1 код функции

function checkPass ( name, pass ) {

var no = findUser(name);

if ( no < 0 ) return false;

return (v.data.base[no].pass == pass);

}

Функция принимает два параметра (имя и пароль) и возвращает true, если пользователь опознан, и false, если нет. Последняя строчка означает «определить истинность условия v.data.base[no].pass == pass и вернуть это значение как результат».

Теперь добавим код к кнопке Войти. Если пользователь не опознан, сообщение об ошибке (поле errInfo) становится видимым, иначе происходит переход к основной части фильма на метку main.

  1. Выделите кнопку Войти и добавьте к ней код

on ( click ) {

with ( _root ) {

if ( ! checkPass(name.text, pass.text) )

errInfo._visible = true;

else gotoAndStop("main");

}

}

Проверьте, появляется ли сообщение об ошибке.

Здесь используется блок

with ( _root ) {

...

}

который говорит о том, что все имена элементов и функций относятся к главному монтажному столу, а не к компоненту-кнопке.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]