Непрерывно выполнять код во фреймере

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

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

layer = new Layer
    x: Align.center
    y: Align.center

layer.onMouseDown ->
    layer.rotation += 1

layer.onMouseUp ->
    layer.rotation -= 1

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

Может ли кто-нибудь помочь мне, пожалуйста?


person sln    schedule 05.01.2018    source источник


Ответы (1)


Если вы хотите, чтобы что-то повторялось без запуска событий (поскольку mouseUp и mouseDown запускаются только один раз за щелчок мыши), вы можете использовать интервалы. Вот пример, который делает то, что вы описываете:

intervalDown = null
intervalUp = null

layer.onMouseDown ->
    window.clearInterval(intervalUp)
    intervalDown = Utils.interval 0.1, ->
        layer.rotation += 1

layer.onMouseUp ->
    window.clearInterval(intervalDown)
    intervalUp = Utils.interval 0.1, ->
        layer.rotation -= 1

Вам нужно создать интервал для каждого события и снова очистить его, используя window.clearInterval, когда сработает другое событие.

Вот полный пример: https://framer.cloud/SEYHy.

person Niels    schedule 08.01.2018