- Сообщений: 1597
- Спасибо получено: 1522
Как сделать скрипт на таймер удерживания кнопки?
Скрыть
Больше
5 года 11 мес. назад #117020
от Демий
Демий создал тему: Как сделать скрипт на таймер удерживания кнопки?
Сейчас ковыряюсь в скриптах аси и что-то совсем завис в своих изысканиях на эту тему. Дело в том, что я хочу сделать проверку, удерживается ли кнопка в течении определённого времени. Алгоритм прост:
Кнопка зажата -> таймер пошёл, если кнопку отпустили, но таймер не дошёл до конца -> происходит одно, если же таймер дошёл -> другое.
Вот только проблема в том, что все варианты, что пришли мне в голову, срабатывают лишь на полное истечение таймера.
Кнопка зажата -> таймер пошёл, если кнопку отпустили, но таймер не дошёл до конца -> происходит одно, если же таймер дошёл -> другое.
Вот только проблема в том, что все варианты, что пришли мне в голову, срабатывают лишь на полное истечение таймера.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
5 года 11 мес. назад #117022
от Dmy
Dmy ответил в теме Как сделать скрипт на таймер удерживания кнопки?
Я бы попробовал переопределить update либо у сцены, либо у таймера (если используется стандартный таймер), и добавить туда проверку на нажатие клавиши.
Спасибо сказали: Демий
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Скрыть
Больше
- Сообщений: 1597
- Спасибо получено: 1522
5 года 11 мес. назад #117023
от Демий
Демий ответил в теме Как сделать скрипт на таймер удерживания кнопки?
И правда, чёт затупил. Уже сам дошёл до этого, но ты лишь укрепил мою уверенность в правильности решения. Получилось как-то так.
Метод chek вызывается через переопределённый update сцены, а @t создаётся в другом методе этого класса.
Пытался через переменную экземпляра, но она обновляется каждый раз, когда нажата кнопка.
Code:
def chek
if Input.press? (:R)
@t += 1
else
@t = 0 if @t != 0
end
end
Метод chek вызывается через переопределённый update сцены, а @t создаётся в другом методе этого класса.
Пытался через переменную экземпляра, но она обновляется каждый раз, когда нажата кнопка.
Спасибо сказали: Lekste
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
5 года 11 мес. назад #117025
от Lekste
Lekste ответил в теме Как сделать скрипт на таймер удерживания кнопки?
Check пишется через ‘ck’. И проверка t != 0 лишняя.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Скрыть
Больше
- Сообщений: 1597
- Спасибо получено: 1522
5 года 11 мес. назад #117027
от Демий
Демий ответил в теме Как сделать скрипт на таймер удерживания кнопки?
Ну да, опечаточка.
А проверку на автомате прописал, чёт подумалось, что так оптимальней будет. Хотя всё одно будет прогоняться строка же.
А проверку на автомате прописал, чёт подумалось, что так оптимальней будет. Хотя всё одно будет прогоняться строка же.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- 2Oth_Century_boi
-
- Не в сети
- Бывалый
-
- А вот и нет, добро – вещь обратно пропорциональная злу.
Скрыть
Больше
- Сообщений: 98
- Спасибо получено: 117
5 года 11 мес. назад - 5 года 11 мес. назад #117033
от 2Oth_Century_boi
2Oth_Century_boi ответил в теме Как сделать скрипт на таймер удерживания кнопки?
Хз как на Ruby, вот как на C++ с SFML:
У кода есть минус: когда зажмём кнопку "Z", то вся прога тупо виснет. Но любой прогер это легко изменит(хотя, иногда стопящаю прогу кнопка — полезная штука).
Code:
#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", то вся прога тупо виснет. Но любой прогер это легко изменит(хотя, иногда стопящаю прогу кнопка — полезная штука).
Последнее редактирование: 5 года 11 мес. назад пользователем 2Oth_Century_boi.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Время создания страницы: 0.111 секунд
