我遇到了一个简单的问题。我想在ImageSurface上实现ScaleSync。每当我结束缩放操作时,数据值将重置为1,如果我执行另一个缩放,则ImageSurfaces将从1开始转换。
define(function(require, exports, module) {
var Engine = require('famous/core/Engine');
var Modifier = require('famous/core/Modifier');
var Transform = require('famous/core/Transform');
var ImageSurface = require('famous/surfaces/ImageSurface');
var Surface = require('famous/core/Surface');
var ScaleSync = require("famous/inputs/ScaleSync");
var mainContext = Engine.createContext();
var start = 1;
var update = 0;
var end = 0;
var growShrink = "";
var objectScale = 1;
var scaleSync = new ScaleSync();
var logo = new ImageSurface({
size: [200, 200],
content: '/content/images/famous_logo.png',
classes: ['backfaceVisibility']
});
var centerModifier = new Modifier({
align: [0.5, 0.5],
origin: [0.5, 0.5]
});
logo.pipe(scaleSync);
scaleSync.on("update", function(data) {
objectScale = data.scale
centerModifier.setTransform(
Transform.scale( objectScale, objectScale, 1)
);
});
scaleSync.on("start", function(){
start ++;
});
scaleSync.on("end", function() {
end++;
});
mainContext.add(centerModifier).add(logo);
});
我尝试使用累加器来实现这一点,但我认为这是出于不同的目的。我想我必须以某种方式改变on.update回调中的数据,但不知道如何做到这一点。 非常感谢您的帮助!
答案 0 :(得分:0)
我找到了解决方案。希望这可以帮助任何有类似问题的人。修饰符应该有一个比例变量,引用如下:
var scale = 1;
var centerModifier = new Modifier({
align: [0.5, 0.5],
origin: [0.5, 0.5],
transform: function(){
return Transform.scale(scale, scale, 1);
}
});
在事件更新时更改变量的状态(我将data.delta除以10以规范化值):
scaleSync.on("update", function(data) {
scale += data.delta / 10;
});