Форум 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)
-   -   Событие Key.isDown с промежутком во времени (http://www.flasher.ru/forum/showthread.php?t=99098)

Edeisys 28.07.2007 00:31

Событие Key.isDown с промежутком во времени
 
Гаспада! И дамы :)
У меня работает код
Код:

if (Key.isDown(Key.SPACE)) {
БлаБлаБла;
}

Но когда я нажимаю пробел, этот код успевает сработать раза два-три. Надо нажимать пробел очень-очень быстро!
А я такой медлиииительныыыый...
Как бы мне лучше организовать код, штобы сколько пробел ни дави, а код бы выполнялся с задержками?

iNils 28.07.2007 00:45

В смысле один раз нажал, один раз сработал код?

BigDan 28.07.2007 00:56

завести счётчик, и проверять остаток от деление на некое число...

CrazyFlasher 28.07.2007 13:46

ну можно в принципе использовать setInterval, setTimeout...это первое, что пришло в голову

BigDan 28.07.2007 13:54

Код:

var kl:Object = new Object();
var counter:Number = 0;
kl.onKeyDown = function(){
  if(counter%10 != 0) return;
  if (Key.isDown(Key.SPACE)) БлаБлаБла;
  if(counter == 10){
    counter = 1;
  }else{
    ++counter;
  }
}
Key.addListener(kl);


screamge 28.07.2007 15:24

Код:

var delay:Number = 5;
var flag:Boolean = true;
var __int:Number;
var keyb:Object = {};
keyb.onKeyDown = function() {
        if (Key.isDown(Key.SPACE) && flag){
                clearInterval(__int)
                __int=setInterval(inter, delay*1000)
                flag=false
        } else {
                trace('probel uzhe nazhat');
        }
};
function inter() {
        clearInterval(__int);
        trace('int');
        flag = true;
}
Key.addListener(keyb);


Edeisys 28.07.2007 17:11

Смыслу понял :)
Сделал так:
Код:

// добавил функцию для прироста таймера
function press_button_timer() {
        if (press_button_timer == 10) {
                press_button_timer = 10;
        }
        else {
                press_button_timer ++;
        }
}

function BlaBlaBla() {       
        if (Key.isDown(Key.SPACE)) {                               
            if (press_button_timer == 10) {
                    БлаБлаБла;
    }
}

Как всегда топорно, но нужного эффекта достиг :)

BigDan 28.07.2007 17:17

Цитата:

Код:

if (press_button_timer == 10) {
                press_button_timer = 10;
        }


Оригинально :)

Edeisys 28.07.2007 20:01

Ну я просто не знаю как сделать так, штобы когда счётчик станет равен 10, штоб он больше не увеличивался. Вот я его и зациклил так. Главное ведь больше 10 не растёт! :)

iNils 28.07.2007 20:04

Код:

if (press_button_timer < 10) {
        press_button_timer ++;
}



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

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