Еденичное нажатие клавиши

В этой теме 7 ответов, 4 участника, последнее обновление  saxartom 3 года/лет, 2 мес. назад.

Просмотр 8 сообщений - с 1 по 8 (из 8 всего)
  • Автор
    Сообщения
  • #1771

    saxartom
    Участник
    Сообщений:22

    Зарегистрирован:
    17.09.2015

    Репутация:4

    Не подскажете, как можно реализовать единичное проигрывание анимации по единичному нажатию на клавишу. Например удар рукой: один раз нажал левую кнопку мыши и один раз проигралась анимация удара.  Пытался по разному, но, либо вообще не проигрывается, либо только по зажатию кнопки, да еще и не один раз, а пока держишь кнопку.

    #1773
    Heisenberg
    Heisenberg
    Участник
    Сообщений:323

    Зарегистрирован:
    01.04.2015

    Репутация:145

    Предоставьте свои попытки реализации.

    #1774
    +1
    Павел Букреев
    Павел Букреев
    Хранитель
    Сообщений:586

    Зарегистрирован:
    04.01.2015

    Репутация:104

    в цикле событий проверять нажатие клавиши. сделать флаг, от которого будет зависеть проигрывание после нажатия

    #1787

    saxartom
    Участник
    Сообщений:22

    Зарегистрирован:
    17.09.2015

    Репутация:4

     

    Вот код в основном цикле (объявление переменной вне цикла) . Пробовал его и в цикл событий вставлять – ничего.

    bool CheckMouseClick = true;

    if (Mouse::isButtonPressed(Mouse::Left)){
    if (CheckMouseClick == true){
    CurrentFrame += 0.005*time;
    if (CurrentFrame > 7){
    CheckMouseClick == false;
    CurrentFrame -= 7;
    }
    hero.sprite.setTextureRect(IntRect(77 * int(CurrentFrame), 430, 77, 75));
    }
    else CheckMouseClick == true;

    #1788

    Oleg
    Участник
    Сообщений:11

    Зарегистрирован:
    09.08.2015

    Репутация:4
    #1789

    saxartom
    Участник
    Сообщений:22

    Зарегистрирован:
    17.09.2015

    Репутация:4

    У меня получилось реализовать так. Но почему то работает только если вставить после вызова метода update. Я бы проигрывание в метод control вставил (как ходьбу), но не знаю как условие преобразовать так чтоб не использовать объект event. А передавать в качестве параметра в функцию – не хочется список параметров засорят (если конечно обойти можно) . Не посоветуете что-то?

    #1792

    Oleg
    Участник
    Сообщений:11

    Зарегистрирован:
    09.08.2015

    Репутация:4

    if (CheckMouseClick) – это не опечатка :) Это идентично if (CheckMouseClick == true).

    И покажи весь файл, посмотрим, что там.

    #1802

    saxartom
    Участник
    Сообщений:22

    Зарегистрирован:
    17.09.2015

    Репутация:4

    Спасибо, я знаю что они одинаковы )).  Просто когда я писал этот участок кода, то был сонный и не заметил, что вместо присвоения я поставил равно .  И, честно, сначала подумал, что вы зачем то продублировали мое сообщение, но позже заметил, что вы указывали именно на это.

    Скидывать весь код нет смысла, поскольку, то что меня интересует именно здесь )) А именно, я хочу разместить этот кусок в методе класса персонажа.

    Но в условии “event.type == С && event.mouseButton.button == Mouse::Left” присутствует использование экземпляра класса Event, объявление которого в главной функции. Можно ли как то заменить “event.type”, “event.MouseButtonReleased” … на “слабую ссылку”.
    Конечно можно передавать в качестве аргумента функции или глобального объявления, но хотелось бы обойтись без этого (если конечно можно).

    Я пытался что-то эквивалентное написать, но зачастую не работало.

Просмотр 8 сообщений - с 1 по 8 (из 8 всего)

Для ответа в этой теме необходимо авторизоваться.