Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Кодовый замок (http://www.flasher.ru/forum/showthread.php?t=203961)

Родион 13.10.2013 18:02

Кодовый замок
 
Делаю для игры кодовый замок, вот код:
Код AS3:

btn1.addEventListener(MouseEvent.CLICK,btn1Click );
 
function btn1Click (event:MouseEvent):void
{
        trace ("1");
        txt.text += String("1");
 
}
btn2.addEventListener(MouseEvent.CLICK,btn2Click );
 
function btn2Click (event:MouseEvent):void
{
        trace ("2");
        txt.text += String("2");
 
}
btn3.addEventListener(MouseEvent.CLICK,btn3Click );
 
function btn3Click (event:MouseEvent):void
{
        trace ("3");
        txt.text += String("3");
 
}
btn4.addEventListener(MouseEvent.CLICK,btn4Click );
 
function btn4Click (event:MouseEvent):void
{
        trace ("4");
        txt.text += String("4");
 
}
btn5.addEventListener(MouseEvent.CLICK,btn5Click );
 
function btn5Click (event:MouseEvent):void
{
        trace ("5");
        txt.text += String("5");
 
}
btn6.addEventListener(MouseEvent.CLICK,btn6Click );
 
function btn6Click (event:MouseEvent):void
{
        trace ("6");
        txt.text += String("6");
 
}
btn7.addEventListener(MouseEvent.CLICK,btn7Click );
 
function btn7Click (event:MouseEvent):void
{
        trace ("7");
        txt.text += String("7");
 
}
btn8.addEventListener(MouseEvent.CLICK,btn8Click );
 
function btn8Click (event:MouseEvent):void
{
        trace ("8");
        txt.text += String("8");
 
}
btn9.addEventListener(MouseEvent.CLICK,btn9Click );
 
function btn9Click (event:MouseEvent):void
{
        trace ("9");
        txt.text += String("9");
 
}
btn0.addEventListener(MouseEvent.CLICK,btn0Click );
 
function btn0Click (event:MouseEvent):void
{
        trace ("0");
        txt.text += String("0");
 
}

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

Akopalipsis 13.10.2013 18:19

Можно вот так -
Код AS3:

package 
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.text.TextField;
 
public class Main extends Sprite implements IBaseObserver
{
        private var _text:TextField;
 
        public function Main()
        {
                if (stage)
                {
                        init();
                }
                else
                {
                        addEventListener(Event.ADDED_TO_STAGE, init);
                }
        }
 
        private function init(event:Event=null):void
        {
                removeEventListener(Event.ADDED_TO_STAGE, init);
 
                stage.addEventListener(MouseEvent.MOUSE_DOWN, stage_mouseDownHandler);
                _text = new TextField();
                super.addChild(_text);
        }
 
        private function stage_mouseDownHandler(event:MouseEvent):void
        {
                _text.text += String(1);
                checkLength(_text);
        }
 
        private function checkLength(text:TextField):void
        {
                if (text.length >= 4)
                {
                        if (Number(text.text) == 1111)
                        {
                                trace("Правильная комбинация");
                        }
                        else
                        {
                                trace("Не правильная комбинация");
                        }
                        trace("Выполнить действия");
                }
                else
                {
                        trace("Выполнить дрогое действие");
                }
        }
 
}
}


Родион 13.10.2013 18:30

Спасибо, но в коде я не силён, можно как то добавить к моему коду? пробую дописать функцию в конце кода:
Код AS1/AS2:

function checkLength(text:TextField):void 
        {
                if (text.length >= 4)
                {
                        if (Number(text.text) == 1111)
                        {
                                trace("Правильная комбинация");
                        }
                        else
                        {
                                trace("Не правильная комбинация");
                        }
                        trace("Выполнить действия");
                }
                else
                {
                        trace("Выполнить дрогое действие");
                }
        }

но что-то не выходит.

Akopalipsis 13.10.2013 18:33

Вам в каждом оброботчике нужно добавить вот таку строчку -
Код AS3:

checkLength(txt);

чтобы вот так было во всех обработчиках -
Код AS3:

function btn1Click (event:MouseEvent):void
{
        trace ("1");
        txt.text += String("1")
          checkLength(txt);
}


Родион 13.10.2013 18:49

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

Akopalipsis 13.10.2013 18:53

Код AS3:

else
{
        trace("Не правильная комбинация");
        text.text = '';
}


Родион 13.10.2013 18:56

Спасибо

Добавлено через 2 часа 45 минут
Вот благодаря пользователю Akopalipsis, у меня есть такой кодовый замок:
Код AS1/AS2:

import flash.sampler.clearSamples;
 
btn1.addEventListener(MouseEvent.CLICK,btn1Click );
 
function btn1Click (event:MouseEvent):void
{
        trace ("1");
        txt.text += String("1");
        checkLength(txt);
}
 
btn2.addEventListener(MouseEvent.CLICK,btn2Click );
function btn2Click (event:MouseEvent):void
{
        trace ("2");
        txt.text += String("2");
        checkLength(txt);
 
}
 
btn3.addEventListener(MouseEvent.CLICK,btn3Click );
 
function btn3Click (event:MouseEvent):void
{
        trace ("3");
        txt.text += String("3");
        checkLength(txt);
 
}
btn4.addEventListener(MouseEvent.CLICK,btn4Click );
 
function btn4Click (event:MouseEvent):void
{
        trace ("4");
        txt.text += String("4");
        checkLength(txt);
 
}
btn5.addEventListener(MouseEvent.CLICK,btn5Click );
 
function btn5Click (event:MouseEvent):void
{
        trace ("5");
        txt.text += String("5");
        checkLength(txt);
 
}
btn6.addEventListener(MouseEvent.CLICK,btn6Click );
 
function btn6Click (event:MouseEvent):void
{
        trace ("6");
        txt.text += String("6");
        checkLength(txt);
 
}
btn7.addEventListener(MouseEvent.CLICK,btn7Click );
 
function btn7Click (event:MouseEvent):void
{
        trace ("7");
        txt.text += String("7");
        checkLength(txt);
 
}
btn8.addEventListener(MouseEvent.CLICK,btn8Click );
 
function btn8Click (event:MouseEvent):void
{
        trace ("8");
        txt.text += String("8");
        checkLength(txt);
 
}
btn9.addEventListener(MouseEvent.CLICK,btn9Click );
 
function btn9Click (event:MouseEvent):void
{
        trace ("9");
        txt.text += String("9");
        checkLength(txt);
 
}
btn0.addEventListener(MouseEvent.CLICK,btn0Click );
 
function btn0Click (event:MouseEvent):void
{
        trace ("0");
        txt.text += String("0");
        checkLength(txt);
 
}
var Code1:Number = Math.round (Math.random() * 9);
trace (Code1);
var Code2:Number = Math.round (Math.random() * 9);
trace (Code2);
var Code3:Number = Math.round (Math.random() * 9);
trace (Code3);
var Code4:Number = Math.round (Math.random() * 9);
trace (Code4);
 
function checkLength(text:TextField):void
        {
                if (text.length >= 4)
                {
                        if (Number(text.text) == Code1 + Code2 + Code3 + Code4)
                        {
                                fscommand ("open_code_door");
                                trace("Открываем дверь");
                        }
                        else
                        {
                                text.text = '';
                                trace("Стираем цифры");
                        }
 
                }
                else
                {
 
                }
        }

Я добавил случайную генерацию кода. Но что-то не так. При вводе кода, сгенерированого, ни чего не происходит, словно он не правильный, стирает всё в поле.

Akopalipsis 13.10.2013 22:05

Цитата:

Но что-то не так.
У Вас вот как получается, Вы вводите четыре числа и проверяете на число состоящее из четырёх чисел.
То есть - 4,5,1,2 == 4512.
Потом Вы создаетечетыре рандомных числа и в проверке их суммируете, то есть 4,5,1,2 == 12.
И потом вы проверяете, равно ли 4512 == 12. И ответ нет.

Родион 13.10.2013 22:08

А как исправить?

Akopalipsis 13.10.2013 22:27

Сделайте генерацию не четырёх чисел, а одного но 9999.


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

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