Javascript 如何使用coffeescript在Framer Studio(Framer.js)中创建和触发自定义事件?
本文演示如何创建和分派DOM事件。这类事件通常称为合成事件,与浏览器本身触发的事件相反。 下面是一个简单的cs示例,适合我的需要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示例,
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。我不知道这是可能的,并尝试了各种解决办法。活动泡泡怎么样?父层可以监听触发自定义事件的子层吗?我认为我们不会自动冒泡自定义事件。显然你可以自己设置,但这需要更多的工作。再次感谢。如果不太麻烦的话,你能演示一下如何设置它吗?一个代码示例?