Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Последовательное нажатие кнопок as3 (http://www.flasher.ru/forum/showthread.php?t=145367)

pachok89 06.10.2010 00:39

Последовательное нажатие кнопок as3
 
Пожалуйста подскажите как проверить последовательность нажатия кнопок(например нажата 1я+2я+3я кнопки=анимация1, если нажаты как то по другому=анимация2), буду очень сильно благодарен.

Astraport 06.10.2010 00:54

Самое простое присваиваешь значение переменным по каждому нажатию. Потом сравниваешь.

Код AS3:

var xVar:String = "м";
var yVar:String = "и";
var wVar:String = "р";
var wordVar:String = xVar + yVar + wVar;
if (wordVar == "мир"){animaton1;}
if (wordVar == "рим"){animaton2;}

Наверное, все же правильнее в массиве переменные складывать и потом сравнивать.

TWETTI 06.10.2010 00:56

Кнопок каких? Клавиатуры или Button. Если для клавиатуры то так:
Код AS3:

package
{
        import flash.display.Sprite;
        import flash.events.KeyboardEvent;
        import flash.text.TextField;
 
        public class Main extends Sprite
        {
                private var isW:Boolean = false; // 87
                private var isA:Boolean = false; // 65
                private var isS:Boolean = false; // 83
                private var isD:Boolean = false; // 68
 
                public function Main()
                {
                        stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
                        stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUp);
                }
 
                private function onKeyDown(event:KeyboardEvent):void
                {
                        if (event.keyCode == 87)
                        {
                                isW = true;
                        }
                        else if (event.keyCode == 65)
                        {
                                isA = true;
                        }
                        else if (event.keyCode == 83)
                        {
                                isS = true;
                        }
                        else if (event.keyCode == 68)
                        {
                                isD = true;
                        }
 
                        if (isA && isS && isD)
                        {
                                trace("You press A, S, D");
                        }
                        else if (isA && isS)
                        {
                                trace("You press A and S");
                        }
 
                }
 
                private function onKeyUp(event:KeyboardEvent):void
                {
                        if (event.keyCode == 87)
                        {
                                isW = false;
                        }
                        else if (event.keyCode == 65)
                        {
                                isA = false;
                        }
                        else if (event.keyCode == 83)
                        {
                                isS = false;
                        }
                        else if (event.keyCode == 68)
                        {
                                isD = false;
                        }
                }               
 
        }
 
}


pachok89 06.10.2010 01:07

TWETTI, сделанных из movieclip.

TWETTI 06.10.2010 01:33

Вот посмотри, я что-то сделал. Думаю что можно намного проще сделать чем я. =)
Код AS3:

package
{
        import flash.display.MovieClip;
        import flash.display.Sprite;
        import flash.events.KeyboardEvent;
        import flash.events.MouseEvent;
        import flash.text.TextField;
 
        public class Main extends Sprite
        {
                private var my_arr:Vector.<String> = new Vector.<String>();
                private var arr:Vector.<String> = new Vector.<String>();
 
                public function Main()
                {
                        var ball1:MovieClip = new MovieClip();
                        ball1.graphics.beginFill(0x000000);
                        ball1.graphics.drawCircle(0, 0, 10);
                        ball1.graphics.endFill();
                        addChild(ball1);
                        ball1.name = "ball1";
                        ball1.x = 20;
                        ball1.y = 50;
 
                        var ball2:MovieClip = new MovieClip();
                        ball2.graphics.beginFill(0x0000FF);
                        ball2.graphics.drawCircle(0, 0, 10);
                        ball2.graphics.endFill();
                        addChild(ball2);
                        ball2.name = "ball2";
                        ball2.x = 100;
                        ball2.y = 50;
 
                        var ball3:MovieClip = new MovieClip();
                        ball3.graphics.beginFill(0x00FF00);
                        ball3.graphics.drawCircle(0, 0, 10);
                        ball3.graphics.endFill();
                        addChild(ball3);
                        ball3.name = "ball3";
                        ball3.x = 300;
                        ball3.y = 50;
 
                        my_arr.push("ball1", "ball2", "ball3"); // Последовательность нажатия на мувиклипы
 
                        stage.addEventListener(MouseEvent.CLICK, onClickMouse);
                }               
 
                private function onClickMouse(e:MouseEvent):void
                {
                        if (e.target is MovieClip)
                        {
                                arr.push((e.target as MovieClip).name);
 
                                if (arr.length >= 3)
                                {
                                        if (my_arr[0] == arr[0] &&
                                                my_arr[1] == arr[1] &&
                                                my_arr[2] == arr[2])
                                        {
                                                trace("Yeah!");
                                        }
                                        arr.splice(0, 1);
 
                                }
 
                        }
 
                }
 
        }
 
}


pachok89 06.10.2010 02:32

TWETTI, большое спасибо.


Часовой пояс GMT +4, время: 21:15.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.