Статьи

Разработка формы проверки возраста с использованием ActionScript 3

В этом руководстве мы узнаем, как разработать и внедрить форму проверки возраста для использования на ваших веб-сайтах или в приложениях. Читай дальше, чтобы узнать больше!

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


Используя класс Date, мы сравним дату рождения пользователя с текущей датой. Однако сначала мы соберем красивый интерфейс, используя Flash CS5 и инструменты рисования.


Запустите Flash и создайте новый документ. Установите размер сцены 600x300px и частоту кадров 24 кадров в секунду.


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

Также есть кнопка для проверки возраста.


Выберите инструмент Rectangle Tool (R) и создайте прямоугольник размером 600×300 пикселей. Поместите его в центр сцены и заполните этим радиальным градиентом: от # F2DC57 до # E9B31B.


Выберите Rectangle Primitive Tool (R), затем создайте прямоугольник с закругленными углами 350×180 px с радиусом угла 7px и заполните его # 111111 60% альфа. Сосредоточьте это в стадии.

Преобразуйте фигуру в MovieClip и добавьте следующий фильтр:

Вы должны закончить что-то вроде этого:

Мы создадим серию статических текстовых полей, которые сообщат пользователю, куда вводить данные. Ничего сложного. Используемый формат: DIN Bold, 17px, #DDDDDD.


В интерфейсе необходимо еще четыре TextFields, первое — это Dynamic TextField, которое будет отображать разные сообщения, по умолчанию написано «Дата рождения», назовите это поле сообщениями .

Другие три — это входные текстовые поля, необходимые для записи даты рождения пользователя, имена экземпляров: monthField, dayField, yearField .


Кнопка будет использоваться для вызова функции, которая будет проверять возраст пользователя.

Используйте Text Tool, чтобы создать основную символьную кнопку и назовите ее enterButton.


Создайте новый (Cmd + N) класс ActionScript 3.0 и сохраните его как Main.as в папке вашего класса.


Ключевое слово package позволяет вам организовать ваш код в группы, которые могут быть импортированы другими сценариями, рекомендуется именовать их, начиная со строчной буквы, и использовать межстрочные буквы для последующих слов, например: myClasses . Также принято называть их, используя сайт вашей компании: com.mycompany.classesType.myClass .

В этом примере мы используем один класс, поэтому на самом деле нет необходимости создавать папку классов.

1
2
package
{

Это классы, которые нам нужно импортировать, чтобы наш класс работал, директива import делает внешние классы и пакеты доступными для вашего кода.

1
2
3
4
5
6
import flash.display.Sprite;
import flash.events.MouseEvent;
import fl.transitions.Tween;
import fl.transitions.easing.Strong;
import fl.transitions.easing.Back;
import flash.net.URLRequest;

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

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

1
2
public class Main extends Sprite
{

Это переменные, которые мы будем использовать, прочитайте комментарии в коде, чтобы узнать о них больше.

1
private var tween:Tween;

Конструктор — это функция, которая запускается, когда объект создается из класса, этот код выполняется первым, когда вы создаете экземпляр объекта или запускается с использованием класса документа.

1
2
3
4
5
6
7
public function Main():void
{
    //Tweens the panel from up to the center
    tween = new Tween(panel,»y»,Strong.easeOut, — panel.height,stage.stageHeight / 2,0.5,true);
    //Adds an event listener to the Enter button and calls the verifyAge function when activated
    panel.enterButton.addEventListener(MouseEvent.MOUSE_UP, verifyAge);
}

Следующая функция преобразует строку месяца, написанную пользователем, в номер месяца, таким образом, ее можно использовать в классе Date.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
private function monthToNumber(month:String):int //A string of the month abbreviation is needed
{
    var monthNumber:int;
 
    //The next for will loop through the array comparing the array months to the one written by the user
 
    for (var i:int = 0; i < months.length; i++)
    {
        if (panel.monthField.text == months[i])
        {
            monthNumber = i;
        }
    }
 
    return monthNumber;
}

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

1
2
private function verifyAge(e:MouseEvent):void
{

Эта строка преобразует строки, записанные во входных текстовых полях, в допустимый объект даты, таким образом, мы можем сравнить даты позже.

Обратите внимание на использование функции monthToNumber здесь.

1
userBirth = new Date(int(panel.yearField.text),monthToNumber(panel.monthField.text),int(panel.dayField.text));

Еще одна важная часть, следующая строка вычисляет возраст пользователя путем вычитания дат и деления результата.

1
userAge = Math.floor((Number(currentDate) — Number(userBirth)) / (1000*60*60*24) / 365);

Вы, наверное, задаетесь вопросом, почему мы делим, используя (1000 * 60 * 60 * 24) / 365, это (миллисекунды * секунды * минуты * часы) / дни. Вот почему мы получаем годы.


Время проверить возраст пользователя, но сначала давайте добавим тестирование ошибок.

Следующие строки будут проверять tooOldAge, чтобы увидеть, является ли пользовательский ввод реалистичным возрастом.

1
2
3
4
5
if (userAge > tooOldAge)
{
    panel.messages.textColor = 0xAA0000;
    panel.messages.text = «You can’t be » + userAge + » years»;
}

Если возраст пользователя превышает минимальный возраст (в данном случае 21), отобразите приветственное сообщение и загрузите фактический контент приложения.

1
2
3
4
5
6
7
else if (userAge >= minimumAge)
{
    panel.messages.textColor = 0xF2DC57;
    panel.messages.text = «WELCOME»;
    tween = new Tween(panel,»x»,Back.easeIn,panel.x,stage.stageWidth + panel.width / 2 + 10,0.3,true);
    loadContent();
}

Еще один тест на ошибки, на этот раз для людей, утверждающих, что они из будущего.

1
2
3
4
5
else if (userBirth.getFullYear() > currentDate.getFullYear())
{
    panel.messages.textColor = 0xAA0000;
    panel.messages.text = «Are you from the future?»;
}

И, наконец, сообщение пользователю, который не имеет требуемого возраста для входа на сайт.

1
2
3
4
5
6
else
{
    panel.messages.textColor = 0xAA0000;
    panel.messages.text = «You must be » + minimumAge + » or over»;
    redirect();
}

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

1
2
3
4
private function loadContent():void
{
    //Content goes here
}

Если пользователь не проходит проверку возраста (не достиг возраста), он будет перенаправлен на другой сайт.

1
2
3
4
private function redirect():void
{
    //navigateToURL(new URLRequest(«http://www.tutsplus.com»));
}

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

Спасибо за чтение этого урока, надеюсь, вы нашли его полезным!