見つけたイージング関数を移植して実装しようとしています
編集
:間違ったイージング機能を貼り付けました、ごめんなさい!正しいものは次のとおりです。
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に設定されます。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は整数I増分、m.durationは変更が完了するまでにかかる時間と想定される時間、m.spriteposxは現在の位置です私が動かしているオブジェクトの。[i]は現在のスプライトです。
1/2秒で345ピクセルを移動したい場合、時間の増分値はどのくらいにする必要がありますか?
すべての実験で、私は大きな要因でオーバーシュートするか、数ピクセルしか移動しません。
現在、m.timeは反復ごとに1ずつ増加し、m.durationは100です。私はすべての種類の値を試しましたが、一貫して機能するものはないようです。