在成帧器中连续执行代码

时间:2018-01-05 14:35:08

标签: coffeescript prototype execute framerjs

我对framer有一点疑问。目前我有一个小的私有项目,我需要在按下鼠标时执行不同的操作。

为了便于讨论,我设置了一个带矩形的简单场景。现在我希望当按下鼠标时矩形向右旋转,而在未按下鼠标时向左旋转。

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

layer.onMouseDown ->
    layer.rotation += 1

layer.onMouseUp ->
    layer.rotation -= 1

问题是代码只检查鼠标是否被按下一次。如果按下按钮,我不知道如何让程序连续检查。

有人可以帮我吗?

1 个答案:

答案 0 :(得分:0)

如果您希望在没有事件被触发的情况下重复发生某些事情(因为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