Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用coffeescript在Framer Studio(Framer.js)中创建和触发自定义事件?_Javascript_Coffeescript_Eventtrigger_Custom Events_Framerjs - Fatal编程技术网

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

Javascript 如何使用coffeescript在Framer Studio(Framer.js)中创建和触发自定义事件?,javascript,coffeescript,eventtrigger,custom-events,framerjs,Javascript,Coffeescript,Eventtrigger,Custom Events,Framerjs,本文演示如何创建和分派DOM事件。这类事件通常称为合成事件,与浏览器本身触发的事件相反。 下面是一个简单的cs示例,适合我的需要 var event = new Event('build'); // Listen for the event. elem.addEventListener('build', function (e) { ... }, false); // Dispatch the event. elem.dispatchEvent(event); 下面是一个简单的cs示例,

本文演示如何创建和分派DOM事件。这类事件通常称为合成事件,与浏览器本身触发的事件相反。

下面是一个简单的cs示例,适合我的需要

var event = new Event('build');

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

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

下面是一个简单的cs示例,适合我的需要

var event = new Event('build');

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

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

我不确定您想做什么,但您可能希望在Framer
对象上自定义事件,对吗

对象有一些很好的速记功能:
on()
emit()
。您可以这样使用它们:

# 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 !"
这将打印出以下内容:

layer = new Layer

customEventName = "something"

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

layer.emit customEventName, 1

layer.emit customEventName, 2
»“自定义事件”,1,
»“定制活动”,2,

我不确定您想做什么,但您可能希望在Framer
对象上自定义事件,对吗

对象有一些很好的速记功能:
on()
emit()
。您可以这样使用它们:

# 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 !"
这将打印出以下内容:

layer = new Layer

customEventName = "something"

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

layer.emit customEventName, 1

layer.emit customEventName, 2
»“自定义事件”,1,
»“定制活动”,2,

您是否在问如何将给定的JS转换为coffeescript?我知道如何将其转换为cs,但如何在framer中使用它?要创建自定义事件,要从层元素触发它,要通过包含层捕获事件?您是否询问如何将给定的JS转换为coffeescript?我知道如何将其转换为cs,但如何在framer中使用它?要创建自定义事件,要从层元素触发它,要通过包含层捕获事件?谢谢Niels。我不知道这是可能的,并尝试了各种解决办法。活动泡泡怎么样?父层可以监听触发自定义事件的子层吗?我认为我们不会自动冒泡自定义事件。显然你可以自己设置,但这需要更多的工作。再次感谢。如果不太麻烦的话,你能演示一下如何设置它吗?代码示例?谢谢Niels。我不知道这是可能的,并尝试了各种解决办法。活动泡泡怎么样?父层可以监听触发自定义事件的子层吗?我认为我们不会自动冒泡自定义事件。显然你可以自己设置,但这需要更多的工作。再次感谢。如果不太麻烦的话,你能演示一下如何设置它吗?一个代码示例?