Войти на сайт

Авторизация, ждите ...
×

ТЕМА: Как сделать скрипт на таймер удерживания кнопки?

Как сделать скрипт на таймер удерживания кнопки? 4 года 6 мес. назад #117020

  • Демий
  • Демий аватар
  • Вне сайта
  • Модератор
  • Здесь могла быть ваша реклама
  • Сообщений: 1597
  • Спасибо получено: 1520
  • 1 место в ГотвПисатель 2 место3 место ГотвВетеранТестерРазработчикУчитель3 место
Сейчас ковыряюсь в скриптах аси и что-то совсем завис в своих изысканиях на эту тему. Дело в том, что я хочу сделать проверку, удерживается ли кнопка в течении определённого времени. Алгоритм прост:
Кнопка зажата -> таймер пошёл, если кнопку отпустили, но таймер не дошёл до конца -> происходит одно, если же таймер дошёл -> другое.
Вот только проблема в том, что все варианты, что пришли мне в голову, срабатывают лишь на полное истечение таймера. :wall:
Администратор запретил публиковать записи гостям.

Как сделать скрипт на таймер удерживания кнопки? 4 года 6 мес. назад #117022

  • Dmy
  • Dmy аватар
  • Вне сайта
  • Заблокирован
  • Сообщений: 1142
  • Спасибо получено: 2478
  • 2 место Проект месяца 3 местоЗа 2 место на конкурсе маппингаРазработчикПаладинДаритель СтимкеяПрограммист RubyУчительВетеранПоддержка Фонда
Я бы попробовал переопределить update либо у сцены, либо у таймера (если используется стандартный таймер), и добавить туда проверку на нажатие клавиши.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Демий

Как сделать скрипт на таймер удерживания кнопки? 4 года 6 мес. назад #117023

  • Демий
  • Демий аватар
  • Вне сайта
  • Модератор
  • Здесь могла быть ваша реклама
  • Сообщений: 1597
  • Спасибо получено: 1520
  • 1 место в ГотвПисатель 2 место3 место ГотвВетеранТестерРазработчикУчитель3 место
И правда, чёт затупил. Уже сам дошёл до этого, но ты лишь укрепил мою уверенность в правильности решения. Получилось как-то так.
  def chek
    if Input.press? (:R)
      @t += 1
    else 
      @t = 0 if @t != 0 
    end
  end

Метод chek вызывается через переопределённый update сцены, а @t создаётся в другом методе этого класса.
Пытался через переменную экземпляра, но она обновляется каждый раз, когда нажата кнопка.
Администратор запретил публиковать записи гостям.
За этот пост поблагодарили: Lekste

Как сделать скрипт на таймер удерживания кнопки? 4 года 6 мес. назад #117025

  • Lekste
  • Lekste аватар
  • Вне сайта
  • Светлый дракон
  • Сообщений: 913
  • Спасибо получено: 566
  • Даритель СтимкеяВетеранПрограммист RubyОраторПрограммист JavaScript
Check пишется через ‘ck’. И проверка t != 0 лишняя.
Администратор запретил публиковать записи гостям.

Как сделать скрипт на таймер удерживания кнопки? 4 года 6 мес. назад #117027

  • Демий
  • Демий аватар
  • Вне сайта
  • Модератор
  • Здесь могла быть ваша реклама
  • Сообщений: 1597
  • Спасибо получено: 1520
  • 1 место в ГотвПисатель 2 место3 место ГотвВетеранТестерРазработчикУчитель3 место
Ну да, опечаточка.

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

Как сделать скрипт на таймер удерживания кнопки? 4 года 6 мес. назад #117033

  • 2Oth_Century_boi
  • 2Oth_Century_boi аватар
  • Вне сайта
  • Бывалый
  • А вот и нет, добро – вещь обратно пропорциональная злу.
  • Сообщений: 98
  • Спасибо получено: 117
  • Учитель
Хз как на Ruby, вот как на C++ с SFML:
#include <SFML/Graphics.hpp>
using namespace sf;
 
int main()
{
Clock myClock; //создаём "часы"
float timeKeyPress; //создаём переменную типа float, в ней будет храниться время зажатия кнопки
while(Keyboard::isKeyPressed(Keyboard::Z) { //допустим, будем проверять клавишу "Z"
timeKeyPress += myClock.getElapsedTime().asSeconds(); 
}
if (timeKeyPress > 5) { *действие, которое произойдёт, если кнопку держали более 5 секунд*; timeKeyPress = 0; }
else if (timeKeyPress != 0) { *действие, которое произойдёт, если кнопку держали менее 5 секунд*; timeKeyPress = 0; }
 
return 0;
}

У кода есть минус: когда зажмём кнопку "Z", то вся прога тупо виснет. Но любой прогер это легко изменит(хотя, иногда стопящаю прогу кнопка — полезная штука).
Последнее редактирование: 4 года 6 мес. назад от 2Oth_Century_boi.
Администратор запретил публиковать записи гостям.
Модераторы: NeKotZima
Время создания страницы: 0.239 секунд