0
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. Такие события обычно называют синтетическими событиями, в отличие от событий, запущенных самим браузером.Как создать и запустить пользовательские события в Framer Studio (Framer.js) с помощью coffeescript?

+0

Вы спрашиваете, как преобразовать данный JS в CoffeeScript? –

+0

Я знаю, как преобразовать его в cs, но как использовать его внутри рамки? создать настраиваемое событие, чтобы вызвать его из элемента слоя, чтобы захватить событие с помощью содержащего слоя? – Amitka

ответ

1

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 !" 
3

Я не уверен, что вы пытаетесь сделать, но, возможно, вы хотите пользовательские события на Framer Layer объектов , правильно?

У объекта Layer есть некоторые прекрасные сокращенные функции: 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> 
+0

Спасибо Niels. Я не знал, что это возможно, и пробовал всевозможные обходные пути. Как насчет пузыря событий? может ли родительский слой прослушивать дочерний уровень, который запускает пользовательское событие? – Amitka

+0

Я не думаю, что мы автоматически настраиваем пользовательские события. Вы можете, очевидно, настроить это самостоятельно, но это немного больше работы. – Niels

+0

Еще раз спасибо. Если это не так уж сложно, вы можете показать, как его настроить? пример кода? – Amitka

Смежные вопросы