拖动一个Famous曲面,并使其在mouseup上转换回原点
Drag a Famous surface and have it transition back to origin on mouseup?
我想拖动Famous曲面,当我放开它时,让它返回到原来的位置。我以"拖动"为例对它进行了修改,但当mouseup
回调正在触发时(我用console.log
进行了检查),修改器转换没有。这是相关代码:
var surface = new Surface({
size: [200, 200],
content: 'drag',
properties: {
backgroundColor: 'rgba(200, 200, 200, 0.5)',
lineHeight: '200px',
textAlign: 'center',
cursor: 'pointer'
}
});
var draggable = new Draggable({
xRange: [-220, 220],
yRange: [-220, 220]
});
surface.pipe(draggable);
var mod = new Modifier();
var trans = {
method: 'snap',
period: 300,
dampingRatio: 0.3,
velocity: 0
};
surface.on('mouseup', function() {
mod.setTransform(Transform.translate(0, 0, 0), trans);
});
mainContext.add(mod).add(draggable).add(surface);
可以肯定的是,这与我在add
结尾将它们转换为mainContext
的顺序/方式以及事件触发的顺序有关。我做错了什么/误解了什么?
您需要在可拖动修饰符上设置Position,而不是尝试更新修饰符(注意,我已将您切换到StateModifier)
var Engine = require("famous/core/Engine");
var Surface = require("famous/core/Surface");
var StateModifier = require("famous/modifiers/StateModifier");
var Draggable = require("famous/modifiers/Draggable");
var Transform = require("famous/core/Transform");
var Transitionable = require("famous/transitions/Transitionable");
var SnapTransition = require("famous/transitions/SnapTransition");
Transitionable.registerMethod('snap', SnapTransition);
var mainContext = Engine.createContext();
var surface = new Surface({
size: [200, 200],
content: 'drag',
properties: {
backgroundColor: 'rgba(200, 200, 200, 0.5)',
lineHeight: '200px',
textAlign: 'center',
cursor: 'pointer'
}
});
var draggable = new Draggable({
xRange: [-220, 220],
yRange: [-220, 220]
});
surface.pipe(draggable);
var mod = new StateModifier();
var trans = {
method: 'snap',
period: 300,
dampingRatio: 0.3,
velocity: 0
};
surface.on('mouseup', function() {
draggable.setPosition([0,0,0], trans);
});
mainContext.add(mod).add(draggable).add(surface);
与其在表面上绑定mouseup事件,更好的方法可能是在可拖动上使用结束事件
surface.on('mouseup', function() {
draggable.setPosition([0,0,0], trans);
});
->
draggable.on('end', function(e) {
draggable.setPosition([0,0,0], trans);
});
这样,触摸事件也会得到处理
相关文章:
- jQuery mouseup在拖离链接后未启动
- CORS:访问控制允许原点不等于提供的原点
- 本地跨原点数据错误
- 当在文档中拖动mouseup/mouseleve时,我想调用我的Ajax请求
- mouseup出现意外行为
- 如何在拖动绑定到“mousedowd,mousemove,mouseup”的锚点时防止重定向
- 如何知道鼠标按钮的当前状态(mouseup状态或mousedown状态)
- d3用时钟中的两个指针变换原点
- javascript可拖动滑块,可在mouseUp上捕捉回中间位置
- 如何在启动mouseup时检测鼠标是否在移动
- Cordova白名单允许导航与访问原点
- 谷歌地图API-从方向的原点检索定位
- 跨原点-弹出窗口(window.opener为空)
- 全局变量原点
- 如何在 html Web 应用中检测滑动原点位置
- 在自定义 JS 游标上设置游标原点
- 在拖动过程中释放鼠标时忽略 JavaScript mouseUp 事件
- 三.js - 如何获取相机相对于原点的位置
- 即使在服务器将访问控制允许原点设置为“*”之后,也会收到javascript错误
- 拖动一个Famous曲面,并使其在mouseup上转换回原点