Modifier を 1 つだけ使用する方法の例を示す github リポジトリを作成しました。
https://github.com/thiswildorchid/famous-modifier-reuseですが、例としてここにコードを含めています。この例では、サーフェスをクリックするとアニメーションがトリガーされますが、好きな方法でトリガーできます。また、ここにフィドルがありますhttp://jsfiddle.net/orchid1/jd2q7r0v/1/
私は Tranform.rotateX を使用しましたが、任意の回転変換を使用できます。開始値のデフォルトを設定していることに注意してください。このアプローチの利点は、Modifier を 1 つだけ使用し、ModifierChain を必要としないことです。
var Engine = require("famous/core/Engine"),
Modifier = require("famous/core/Modifier"),
Surface = require("famous/core/Surface"),
Transitionable = require("famous/transitions/Transitionable"),
Transform = require("famous/core/Transform");
var context, mod, surf, opacityTransform, rotateTransform;
context = Engine.createContext();
context.setPerspective(1000);
//the opacities starting value is 1
opacityTransform = new Transitionable(1);
//the starting rotation is an angle of zero
//you can console log Transform.identity to see the value but its basically an angle of 0
rotateTransform = new Transitionable(Transform.identity);
//very basic modifier here
mod = new Modifier({
size: [100, 100],
origin: [0.5, 0.5],
align: [0.5, 0.5]
});
//very simple surface
surf = new Surface({
content: "Hello World",
properties: {
border: "1px red solid",
textAlign: "center",
lineHeight: "100px"
}
});
//gotta add everything to the context
context.add(mod).add(surf);
//here I tell the modifier to transform using my custom transitionables transforms
mod.transformFrom(rotateTransform);
mod.opacityFrom(opacityTransform);
//for illustration purposes I used a click event but trigger it any way you like
surf.on("click", function () {
//you can add an easing function here if you would like and even a callback as the 3rd argument
//more importantly here you see I set the opacity to 0 and the rotation to the new angle I want
opacityTransform.set(0, {duration: 1000});
rotateTransform.set(Transform.rotateX(1.4), {duration: 1000});
});