我正在尝试移植和实现我发现的缓动功能
编辑
: 我贴错了缓动函数,对不起!这是正确的:
Math.easeOutQuart = function (t, b, c, d) {
t /= d;
t--;
return -c * (t*t*t*t - 1) + b;
};
我使用的语言不是 Flash 或 Actionscript。这是我的代码:
ease:{outquart:{function(t as float,b as float,c as float,d as float) as float
t=t/d
t=t-1
return -c * (t*t*t*t - 1) + b
end function}}
我在循环中调用该函数:
EDIT2 - 调用函数。
m.move 设置为 1 或 -1 表示移动方向,或 -5 +5 表示移动 5 个长度。尽可能频繁地调用 setspritemoves,目前它与系统调用的速度一样快,但我可以在毫秒计时器上触发调用。
setspritemoves:function()
if m.move=1 then
m.duration=1
if m.ishd then
for i=0 to m.spriteposx.count()-1
m.moveto[i]=m.spriteposx[i]+m.move*324
next i
else
for i=0 to m.spriteposx.count()-1
m.moveto[i]=m.spriteposx[i]+m.move*224
next i
end if
else if m.move=5 then
m.duration=5
if m.ishd then
for i=0 to m.spriteposx.count()-1
m.moveto[i]=m.spriteposx[i]+m.move*324
next i
else
for i=0 to m.spriteposx.count()-1
m.moveto[i]=m.spriteposx[i]+m.move*224
next i
end if
else if m.move=-1 then
m.duration=1
if m.ishd then
for i=0 to m.spriteposx.count()-1
m.moveto[i]=m.spriteposx[i]-m.move*324
next i
else
for i=0 to m.spriteposx.count()-1
m.moveto[i]=m.spriteposx[i]-m.move*224
next i
end if
else if m.move=-5 then
m.duration=5
if m.ishd then
for i=0 to m.spriteposx.count()-1
m.moveto[i]=m.spriteposx[i]-m.move*324
next i
else
for i=0 to m.spriteposx.count()-1
m.moveto[i]=m.spriteposx[i]-m.move*224
next i
end if
end if
end function
m.moveto[i] 是目标 x 坐标,m.time 是我递增的整数,m.duration 是我假设我希望完成更改所需的时间量,m.spriteposx 是当前位置我正在移动的对象。[i] 是当前的精灵。
如果我想在 1/2 秒内移动 345 个像素,时间的增量值应该是多少?
在我所有的实验中,我要么超调了一个很大的因素,要么只移动了几个像素。
目前 m.time 每次迭代都会增加 1,而 m.duration 是 100。我尝试了各种值,但似乎没有一个能始终如一地工作。