javascript - 拖动一个 Famous 表面并让它在 mouseup 上过渡回原点?

标签 javascript famo.us

我想拖动一个 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的顺序/方式以及事件触发的顺序有关.我做错了什么/误解了什么?

最佳答案

您需要在可拖动修改器上设置位置,而不是尝试更新修改器(注意我已将您切换到 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);

关于javascript - 拖动一个 Famous 表面并让它在 mouseup 上过渡回原点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23129805/

相关文章:

javascript - 具有可变宽度的固定标题/可滚动表格

javascript - 如何根据单击的对象在右键单击时创建多个上下文菜单?

javascript - 窗口加载时启动计时器

javascript - 清除 :active pseudo-class on current element with JavaScript

javascript - 如何使用 Material-table 更改索引列

famo.us - 如何实现google paper按钮效果

famo.us - famo.us 中响应式应用程序的最佳模式是什么

node.js - 在famo.us 上运行着名的开发人员时出错

famo.us - 是否可以根据 Famo.us 中的百分比设置表面尺寸?

javascript - 在 Famo.us 中过渡颜色(或非变换/不透明度 CSS 属性)的正确方法?