1

几周前,我从 Koen Bok 发现了这个将 Hammer.js 事件集成到 Framer.js 中的小宝石。但是,它是为较旧版本的 Hammer 制作的,此后该版本已被重写。从理论上讲,我可以通过调整 HammerEvents 很容易地将其移植到新版本,并且对于平移和滑动事件似乎一切正常。但是由于某种原因,我无法使用最新的 Hammer 脚本(2.0.4)来捏合或旋转事件。

这是 Hammer.js 1.1.3 的原始片段:

HammerEvents =

    Tap: 'tap'
    DoubleTap: 'doubletap'
    Hold: 'hold'
    Touch: 'touch'
    Release: 'release'
    Gesture: 'gesture'

    Swipe: 'swipe'
    SwipeUp: 'swipeup'
    SwipeDown: 'swipedown'
    SwipeLeft: 'swipeleft'
    SwipeRight: 'swiperight'

    Transform: 'transform'
    TransformStart: 'transformstart'
    TransformEnd: 'transformend'

    Rotate: 'rotate'

    Pinch: 'pinch'
    PinchIn: 'pinchin'
    PinchOut: 'pinchout'

window.Events = _.extend Events, HammerEvents

class HammerLayer extends Framer.Layer

    on: (eventName, f) ->

        if eventName in _.values(HammerEvents)
            @ignoreEvents = false
            hammer = Hammer(@_element).on eventName, f

        else
            super eventName, f

window.Layer = HammerLayer

有人知道出了什么问题吗?非常感谢!

4

1 回答 1

0

刚刚尝试了片段。它似乎工作得很好。我用这段代码试了一下:

doubleTap = new HammerLayer

doubleTap.on HammerEvents.DoubleTap, ->
    print "You just doubletapped me."

您是否确保将 Hammer.js javascript 库包含到您的 Framer 原型中?

  1. 将http://hammerjs.github.io/dist/hammer.min.js保存到您的 Framer 项目中。我把它放在一个名为js.
  2. index.html在 Framer 文件夹中打开并<script src="js/hammer.min.js"></script>在所有其他<script>包含项之后添加该行。
  3. 您的 Hammer 事件现在应该在 Framer 中触发。
于 2017-09-25T18:57:32.367 回答