Статьи

Совет: создайте минималистичный песочный замок с помощью ActionScript 3

Прочитайте простые шаги этого Быстрого Подсказки, чтобы создать Минималистичный Песочный Замок с ActionScript.


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


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


Запустите Flash и создайте новый документ Flash, установите размер сцены 400×250 пикселей и частоту кадров 24 кадра в секунду.


Это интерфейс, который мы будем использовать, квадраты на изображении — это фактически один синий квадрат MovieClip, экспортированный для использования с ActionScript, с именем связывания Square . Простая кнопка с именем startButton будет использоваться для создания и запуска часов.


Создайте новый класс ActionScript (Cmd + N), сохраните файл как Main.as и напишите следующие строки. Прочитайте комментарии в коде, чтобы полностью понять поведение класса.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package
{
    import flash.display.Sprite;
    import flash.utils.Timer;
    import flash.events.TimerEvent;
    import flash.events.MouseEvent;
 
    public class Main extends Sprite
    {
        private var clockArray:Array = [15,13,11,9,7,3,1];//Stores the number of squares per line
        private var top:Array = [];
        private var container:Sprite = new Sprite();
        private var containerCopy:Sprite = new Sprite();
        private var timer:Timer = new Timer(1000);
        private var counter:int = 0;
 
        public function Main():void
        {
            startButton.addEventListener(MouseEvent.MOUSE_UP, buildClock);//a listener in the start button
        }
 
        private function buildClock(e:MouseEvent):void
        {
            startButton.removeEventListener(MouseEvent.MOUSE_UP, buildClock);
            startButton.enabled = false;
             
            var clockLength:int = clockArray.length;
 
            /* this double for browses through the clock array length AND the value of each array element
                creating 7 lines (length) of squares with 15, 13, 11(element value) and so on */
 
            for (var i:int = 0; i < clockLength; i++)
            {
                for (var j:int = 0; j < clockArray[i]; j++)
                {
                    var s:Square = new Square();
                    var sc:Square = new Square();
 
                    sx = 70.5 + (s.width * j) + (1 * j) + (i * (s.width + 1));
                    sy = 84.5 + (s.height + 1) * i;
                    sc.x = sx;
                    sc.y = sy;
 
                    if (i >= 5)
                    {
                        sx = 70.5 + (s.width * j) + (1 * j) + (i * ((s.width) + 1)) + (s.width * 2 — 4);
                        sc.x = sx;
                    }
 
                    container.addChild(s);
                    containerCopy.addChild(sc);
 
                    top.push(s);
                    sc.alpha = 0.2;
                }
 
                addChild(container);
 
                containerCopy.x = 225;
                containerCopy.y = 247;
                containerCopy.rotation = 180;
 
                addChild(containerCopy);
            }
 
            timer.addEventListener(TimerEvent.TIMER, startClock);
            timer.start();
        }
 
        /* this function executes every second, it changes the alpha of the corresponding square to make the sand effect.
            when the time is done stops the timer and calls a function */
 
        private function startClock(e:TimerEvent):void
        {
            container.getChildAt(counter).alpha = 0.2;
            containerCopy.getChildAt(counter).alpha = 1;
            counter++;
 
            //60 seconds
 
            if (counter >= 59)
            {
                timer.stop();
                timer.removeEventListener(TimerEvent.TIMER, startClock);
                timeComplete();
            }
        }
 
        private function timeComplete():void
        {
            //do something here
        }
    }
}

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


Не забудьте добавить имя класса в поле « Класс» в разделе « Публикация » на панели « Свойства» .


Почему бы не использовать этот SandClock, чтобы сделать ваше приложение или игру приятнее?

Надеюсь, вам понравился этот урок, спасибо за чтение!