我正在尝试在famous.js中实现可拖动/可拖放的图像。也就是说,如果图像被放置在正确的表面上,则会触发事件。
在我可拖动的图片上,我正在聆听' touchend'事件。这里没问题。
我还有一个与我的目标'相关联的touchend事件。表面。问题是当我释放可拖动的时候,这个touchend事件不会触发,只会触发draggable中的touchend。
我的问题是:Famous.js是否具有可放置的'像jQuery中的对象?如果没有,我怎样才能检测到目标视图上发生事件的时间?
我的代码几乎只是来自this answer的代码,并添加了一些事件处理程序。
答案 0 :(得分:4)
还没有可放置的对象..但您可以在曲面上使用普通的HTML5 DOM事件。这是一个工作拖放示例,用于记录您删除的文件。
var Engine = require('famous/core/Engine');
var Surface = require('famous/core/Surface');
var Modifier = require('famous/core/Modifier');
var context = Engine.createContext();
var surface = new Surface({
size:[200,200],
content:"Drop Here!",
properties:{
border:'4px solid white',
backgroundColor:'green',
fontSize:'36px',
fontFamily:'arial',
textAlign:'center',
color:'white',
lineHeight:'200px'
}
});
surface.on('dragenter', function(evt){
evt.preventDefault();
return false;
});
surface.on('dragleave', function(evt){
surface.setProperties({border:'4px solid white'});
evt.preventDefault();
return false;
});
surface.on('dragover', function(evt){
surface.setProperties({border:'4px solid black'})
evt.preventDefault();
return false;
});
surface.on('drop', function(evt){
evt.preventDefault();
evt.stopPropagation();
surface.setProperties({border:'4px solid white'});
files = evt.dataTransfer.files;
console.log(files);
});
context.add(new Modifier({origin:[0.5,0.5]})).add(surface);