我注意到 Famo.us 中的 GenericSync 类有一些奇怪的行为。如果您在表面上添加 “mousedown”
事件,它只会阻止引擎上的 GenericSync。只需注释掉 Fiddle 中的最后一行即可查看问题。
http://jsfiddle.net/ckhu1pvw/8/
define('main', function (require, exports, module) {
var Engine = require('famous/core/Engine');
var EventHandler = require('famous/core/EventHandler');
var Surface = require('famous/core/Surface');
var mainContext = Engine.createContext();
var surface = new Surface({
size: [400, 200],
content: "Drag on me",
properties: {
background: "red",
lineHeight: "200px",
textAlign: "center",
color: "white"
}
});
var eventHandler = new EventHandler();
surface.pipe(eventHandler);
mainContext.add(surface);
var GenericSync = require("famous/inputs/GenericSync");
var MouseSync = require("famous/inputs/MouseSync");
var TouchSync = require("famous/inputs/TouchSync");
var ScrollSync = require("famous/inputs/ScrollSync");
GenericSync.register({
mouse: MouseSync,
touch: TouchSync,
scroll: ScrollSync
});
var sync = new GenericSync();
sync.addSync(["mouse", "touch", "scroll"]);
sync.on("start", function (event) {
console.log("SyncStart");
});
sync.on("update", function (event) {
surface.setContent(event.delta[0] + ", " + event.delta[1]);
});
sync.on("end", function (event) {
console.log("SyncEnd");
surface.setContent("0, 0");
});
Engine.pipe(sync);
// comment out this line to see the sync fail :(
//surface.on('mousedown', function(e) {console.log('The down of the mice');});
});
这是一个更大计划的最后一个谜题,所以如果你看的话请尽量保持类似的结构(我的意思是请在引擎上使用同步)。欢迎任何肮脏的黑客攻击,我只是对优雅的解决方案失去了希望。
谢谢, 戴夫
更新,作者 David Szucs,2014 年 8 月 11 日
我该怎么做才能在表面上捕获 mousedown
事件以及在全局同步上触发 start
事件?
最佳答案
我会认为它就像在您点击的项目上方的 zIndex 中放置一些东西。如果您通过表面传输同步,它会再次工作。不确定它是否有帮助如果我对你在做什么有更多的了解我可以提供进一步的帮助。
关于javascript - Famo.us GenericSync 被 'mousedown' 事件阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25221791/