编程自定义轻松

时间:2019-04-11 20:56:59

标签: actionscript-3

尝试创建带有easyInOut效果的动态wheelSpin,但我想更精确地控制输入和输出的强度。例如,它将具有更长的缓解时间。 AS3 Tween将您锁定在一些简单的预设中,但没有给我我所需的控制权。我还没有找到有关制作方法的任何教程。我唯一看到的是Greensock Custom Ease,但我正在尝试创建自己的或使用免费的东西,这些东西首先没有使用许可的问题。

我有一个想法,要创建一个影片剪辑,在其中使用贝塞尔曲线控件在一个简单对象之间进行补间,然后在每个帧中调用补间属性并将其存储在变量中。然后,我为要操纵的对象创建一个函数,以在与该电影的时间长度相关的时间内应用此更改。看起来像是功能性的骇客,但有些笨拙。我宁愿保持此代码驱动。

2 个答案:

答案 0 :(得分:1)

您可以使用我的补间类ru.delimiter.math.TweenALot,它依赖于同一存储库中的 ru.delimiter.events.Chronos ,您可以抓住它,也可以更改 TweenALot < / strong>改用 ENTER_FRAME

这门课很老,所以请不要以其风格来评判我。

用法:

import ru.delimiter.math.TweenALot;

var aTween:TweenALot = new TweenALot;

// The tweening target.
aTween.target = this;

// The destination properties.
aTween.properties = {x:100, y:100, alpha:0};

// The tweening duration, in milliseconds.
aTween.duration = 3000;

// Easing.
aTween.easingFunction = TweenALot.easeInOut;

// Pass the complete handler and start tweening.
aTween.start(onComplete);

function onComplete():void
{
    trace("I have disappeared!");

    // Destroy and release the tween instance.
    aTween.destroy();
    aTween = null;
}

然后,在该类的底部,有许多缓动函数,我相信我这样做是为了与某些东西兼容,只是不记得到底是什么。因此,您可以创建自己的缓动函数,甚至不需要将它们添加到类中,只需将它们分配给补间的 easingFunction 属性即可。

function weirdEasing(t:Number, b:Number, c:Number, d:Number):Number
{
    var aProgress:Number = Math.min(1, t / d);

    if (aProgress <= 0.5) return b;

    return b + c * Math.pow((aProgress - 0.5) * 2, 2);
}

答案 1 :(得分:0)

另一种不错的补间可以提供缓慢的有机补间效果,比大多数指数补间要慢,它使用了简单的zeno悖论:

obj.x += (targetX - obj.x) / 0.5;

只需播放参数,或添加更精细的控制。好有趣。当距离足够小以停止运动时,您可以添加一个检查项。