我按照这个例子
http://famo.us/university/famous-102/input/5/
它没有示例提到多点触控
Famo.us还支持多点触控手势,例如旋转,
捏和缩放。要熟悉这些内容,请访问
[链接到Examples.GIT]
有什么简单的例子可以通过数组或类似的东西进行触摸?我认为这与TouchTracker
https://famo.us/docs/0.2.0/inputs/TouchTracker有关?
最佳答案
这花了我一段时间。
首先是一个错误。
在第84行的TouchSync.js中:
payload.touch = data.identifier;
应该..
payload.touch = data.touch.identifier;
接下来,如果要跟踪所有事件,则可以通过TouchSyncs的每个开始,更新和结束事件来手动进行。 TouchSync仅使用TouchTracker来管理多点触摸,但这是您无需自己使用的类。
这是我跟踪多个触摸输入的示例。注意,我需要在数据对象进入事件处理程序时对其进行克隆,以保持对其的正确引用。还花了一段时间才能弄清楚。希望这对您有所帮助!
var Engine = require("famous/core/Engine");
var TouchSync = require("famous/inputs/TouchSync");
var Surface = require("famous/core/Surface");
var mainContext = Engine.createContext();
var touches = {};
var touchSync = new TouchSync(function() { return position; });
Engine.pipe(touchSync);
var contentTemplate = function() {
var string = "Touches:<br/>";
for (var key in touches ) {
var touch = touches[key];
var x = touch.clientX ? touch.clientX : "" ;
var y = touch.clientY ? touch.clientY : "" ;
string += "key: "+key+", x: "+ x+", y: "+ y +"<br/>";
}
return string;
};
var surface = new Surface({
size: [undefined, undefined],
classes: ['grey-bg'],
content: contentTemplate(),
properties: {
padding:'10px'
}
});
var clone = function(obj){
var newObj = {};
for ( var key in obj ) { newObj[key] = obj[key]; }
return newObj;
}
touchSync.on("start", function(data) {
touches[data.touch] = clone(data);
surface.setContent(contentTemplate());
});
touchSync.on("update", function(data) {
touches[data.touch] = clone(data);
surface.setContent(contentTemplate());
});
touchSync.on("end", function(data) {
delete touches[data.touch];
surface.setContent(contentTemplate());
});
mainContext.add(surface);