我如何使用 coffeescript 在 Framer Studio (Framer.js) 中创建和触发自定义事件?

How can i create and trigger custom events in Framer Studio (Framer.js) using coffeescript?

var event = new Event('build');

// Listen for the event.
elem.addEventListener('build', function (e) { ... }, false);

// Dispatch the event.
elem.dispatchEvent(event);

enter link description here 本文演示了如何创建和调度 DOM 事件。此类事件通常称为合成事件,与浏览器本身触发的事件相对。

Got this link from Framer group at FB.

这是一个满足我需要的简单 cs 示例

# npm install events
EventsEmitter = require('events')

class customEvent extends EventsEmitter
    constructor: ->
        @on "startScan", -> startAppsScan()
        @on "cancelScan", -> cancelScan()

startScanButton = new Layer
    x: Align.center
    y: Align.center(-150)
    backgroundColor: "yellow"

cancelScanButton = new Layer
    x: Align.center
    y: Align.center(150)
    backgroundColor: "red"

startScanButton.onClick ->
    evt = new customEvent
    evt.emit "startScan"

cancelScanButton.onClick ->
    evt = new customEvent
    evt.emit "cancelScan"

startAppsScan = ->
    print "starting scan...."

cancelScan = ->
    print "scan is cancelled !"

我不确定您要做什么,但您可能想要 Framer Layer 对象上的自定义事件,对吗?

Layer 对象有一些不错的 shorthand 函数:on()emit()。您可以这样使用它们:

layer = new Layer

customEventName = "something"

layer.on customEventName, (argument, layer) ->
    print "Custom event", argument, layer

layer.emit customEventName, 1

layer.emit customEventName, 2

这将打印出以下内容:

» "Custom event", 1, <Layer layer id:1 (0, 0) 200x200>
» "Custom event", 2, <Layer layer id:1 (0, 0) 200x200>