Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Двойное нажатие кнопки (http://www.flasher.ru/forum/showthread.php?t=116850)

Pedro 12.10.2008 17:03

Двойное нажатие кнопки
 
Как сделать, чтобы на быстрое двойное нажатие клавиши случалось какое-либо действие? Если не влом, напишите пример кода.

Zik. 12.10.2008 17:39

Вот скрипт:
Код:

Mouse.addListener(Mouse);     
Mouse["onMouseDown"+""] = function():Void { 
if (getTimer()-this.time<=300 && this.flag) { 
                Mouse["broadcastMessage"]("onDoubleClick");
                this.flag = false;
                trace("АгА!!!!")
                // здесь писать условия
        } else {
                this.time = getTimer();
                this.flag = true;
        }
};
Mouse["rightClick"] = function():Void {
        if (Key.isDown(2)) {
                trace(9)
                Mouse["broadcastMessage"]("onRightClick");
        }
};
setInterval(Mouse, "rightClick", 100);

Хотя вообще-то ты еще маленький, что бы такие вещи знать.

Pedro 12.10.2008 17:46

Так, отлично. Только я имел ввиду клавишу клавиатуры... Что на что заменить?

Mnilionic 12.10.2008 18:35

Для клавеши [A]
Код:

var keyListener:Object = new Object();
keyListener.onKeyDown = down;
keyListener.onKeyUp = up;
Key.addListener(keyListener);

var downs = 0;
var ups = 0;
var timer;

function down() {
        if (Key.getCode() == 65) {
                downs++;
                clearInterval(timer);
                if (downs == 2 && ups == 1) {
                        clear(); done();
                } else timer = setInterval(clear, 600);
        }
}
function up() {
        if (Key.getCode() == 65) ups = downs;
}
function clear() {
        clearInterval(timer);
        ups = 0; downs = 0;
}
function done() {
        trace('ok');
}


dimarik 12.10.2008 18:49

ZIK68, эммм.. это к чему?

Mouse["onMouseDown"+""] = function():Void { }

Pedro 12.10.2008 18:50

Блин! Все гениальное просто! Огромный сенькс!!!

dimarik 12.10.2008 19:08

Mnilionic, зачем создавать объект-листенер для того, чтобы переназначить его callback-функции на рутовые?
Проще надо быть
Код:

Key.addListener(this);

var downs = 0;
var ups = 0;
var timer;

function onKeyDown() {
        if (Key.getCode() == 65) {
                downs++;
                clearInterval(timer);
                if (downs == 2 && ups == 1) {
                        clear(); done();
                } else timer = setInterval(clear, 600);
        }
}
function onKeyUp() {
        if (Key.getCode() == 65) ups = downs;
}
function clear() {
        clearInterval(timer);
        ups = 0; downs = 0;
}
function done() {
        trace('ok');
}

Update. И раз пошла такая пьянка, то нужно все остальное типизировать, а не только var keyListener:Object = new Object();

Mnilionic 12.10.2008 19:32

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

Жень Шень 13.10.2008 12:43

Привет!
Или без setInterval
Код:

Key.addListener(this);
var oldStartTimer:Number = 0;
function onKeyDown() {
        if (Key.getCode() == 65) {
                if (getTimer()-oldStartTimer<300) {
                        done();
                } else {
                        oldStartTimer = getTimer();
                }
        }
}
function done() {
        trace('ok');
}


Mnilionic 13.10.2008 15:03

Жень Шень, "залипание" кнопки не учтено


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

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