- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
也许是一个简单的问题,我正在沿着弯曲的路径制作动画,并希望应用一个缓动配置文件,该缓动配置文件在补间的前半部分缓出,在后半部分缓入。那么快-慢-快的轮廓,就像一个球被扔到空中一样,这是否有意义?
TweenJS Spark Table 中列出的缓动选项包含一些与我正在寻找的内容几乎相反的内容;例如,像cubicInOut。使用之前的(糟糕的)描述,这将是慢-快-慢。
我当然可以通过使用不同的缓动链接补间来实现此目的,但这看起来不太干净,并且顶部有一个暂停,需要为此应用程序解决。
一个示例,显示顶部的cubicInOut,以及使用cubicOut的链接补间,然后使用底部的cubicIn来实现接近我想要的效果。
var stage = new createjs.Stage("canvas");
createjs.Ticker.addEventListener("tick", tick);
createjs.MotionGuidePlugin.install();
var shape1 = new createjs.Shape();
shape1.graphics.f("#000000").dc(0,0,10);
var shape2 = shape1.clone();
var path1 = new createjs.Shape();
path1.graphics.beginStroke("#ff0000").mt(0,100).qt(200,0,400,100);
var path2 = path1.clone();
path2.y = 100;
stage.addChild(path1, path2, shape1, shape2);
createjs.Tween.get(shape1).to({guide:{ path:[0,100, 200,0, 400,100] }},2000, createjs.Ease.cubicInOut);
createjs.Tween.get(shape2).to({guide:{ path:[0,200, 100,150, 200,150] }},1000, createjs.Ease.cubicOut).call(function(){
createjs.Tween.get(shape2).to({guide:{ path:[200,150, 300,150, 400,200] }},1000, createjs.Ease.cubicIn);
});
function tick(event) {
stage.update();
}
Fiddle以这个例子为例。
只是想知道是否有一种更简洁的方法来实现此目的,而不需要链接补间,并且无需在曲线顶点处暂停?宽松方程似乎是最简单的,但我不确定如何实现它。任何想法将不胜感激。
非常感谢,
巴普斯。
最佳答案
TweenJS API文档说:
The Ease class provides a collection of easing functions for use with TweenJS. It does not use the standard 4 param easing signature. Instead it uses a single param which indicates the current linear ratio (0 to 1) of the tween.
指导Custom Easing Functions GitHub 上的问题/文章,有一种方法可以定义自定义函数。继续创建您的 Bezier easing function ,然后将其转换为线性。
你会得到这样的贝塞尔函数:
function(t:Number, b:Number, c:Number, d:Number):Number {
var ts:Number=(t/=d)*t;
var tc:Number=ts*t;
return b+c*(0.699999999999999*tc*ts + -1.75*ts*ts + 3.9*tc + -4.1*ts + 2.25*t);
}
你的 TweenJS 缓动将是:
var myEasing = function( k ) {
var t = (k*100);
var d = 100;
var ts=(t/=d)*t;
var tc=ts*t;
return (0.699999999999999*tc*ts + -1.75*ts*ts + 3.9*tc + -4.1*ts + 2.25*t);
};
在您的代码中,您将这样使用它:
createjs.Tween.get(shape2).to({guide:{ path:[0,200, 200,100, 400,200] }},2000, myEasing);
查看updated Fiddle 。
关于javascript - TweenJS中如何实现弹道缓动效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32488647/
我正在使用 OpenGL 创建 3D 空间。我有一艘可以发射激光的宇宙飞船。 到目前为止,我已经掌握了它,以便激光一旦发射就会更深入 Z 轴。但是我正在尝试制作一个带有十字准线的正确瞄准系统,以便您可
我正在尝试制作一个运动行为在图中显示为红色的弹丸。 我现在知道和拥有的是两个向量;开始和结束。 最终目标是在迭代时使弧线具有一些随机性,并以 lerp 方式改变射弹速度。我以前做过几代线性运动,但没有
我是一名优秀的程序员,十分优秀!