ease
トラックバーイージングスクリプトです。
Undofish氏のものと同じような番号を指定するイージングと、ベジェ軌道を用いたイージングを一つにまとめた感じです。
計算を高速化しつつ、ベジェ軌道Tにあったバグ(というか仕様)も直しています(というか起こることをしないようにした)。 ランダム配置と併用できない とか
このスクリプトは一緒にease.dllというものを提供していますが、これを使うとイージングを利用したスクリプトが非常に書きやすいはずです。
内容物
@ease.tra - トラックバー変化方法スクリプト 本体
ease_common.lua - @ease.tra で使う共通関数
ease.dll - イージング用モジュール
ease.txt - この取説
ease_graph.obj - ベジエ軌道確認用カスタムオブジェクト
導入方法
ease.dll は exedit.auf と同じディレクトリに置きます。
@ease_common.lua , @ease.tra は同じディレクトリに置きます。 よくわからない人はscript直下がお勧めです。
ease_graph.obj の導入は任意で、使う場合は @ease_common.luaと同じディレクトリに置きます。
使い方
大体Undofishイージングと同じですが、番号の指定方法が独特です
Undofishイージングの付番を利用するには、-1~-41の負数を入れます
ベジエ軌道を利用するには、適切な8桁の正整数を入れます
これは、制御点を(25,25),(x1,y1),(x2,y2),(75,75)としたときにx1y1x2y2となるように2桁ずつ入れます
例えば、一番急なEaseOutなら25752575になります
ease_graph カスタムオブジェクトを利用することで軌道の確認を行えます これを使わなくてもよいように慣れてほしいです
ease.dllについて
他のスクリプトから使われることを想定した設計をしています。使い方は以下を参照してください。
ロード
local ease=require"ease"など
用語:ease_function
function(p,s,e)のように呼び出し可能である値のことをease_functionと定義します。
ただし引数の意味は、sが始点、eが終点、pが進捗$ [0,1] です。
例えばease_function(0,s,e)==sでease_function(1,s,e)==eです。
メンバ
ease[string]のようにすると、"Linear"や"OutExpo"等の名称からease_functionを取得できます。
またease[number](numberは$ [1,41] の整数)のようにすると、Undofishイージングの軌道番号でease_functionを取得できます。
ease.bezier
2種類の呼び出し方があります
code:Lua
ease.bezier(p,s,e,x0,y0,x1,y1)
7引数で呼び出すと、直接イージングの計算を行います。
制御点は$ (0,0),(x_1,y_1),(x_2,y_2),(1,1)です。
code:Lua
ease.bezier(x0,y0,x1,y1)
4引数で呼び出すと、そのようなイージングを行うease_functionを返します。Undofishイージングのease_functionと呼び出し方は共通です。
制御点の条件は同じ。
使用例
code:Lua
local ease=require"ease"
local function draw(x1,y1,x2,y2,func)
for i=0,100 do
obj.draw(ease1(i*.01,x1,x2),func(i*.01,y1,y2)) end
end
obj.load("figure","円",0xffffff,7)
draw(-200,200,200,-200,ease23) draw(-200,200,200,-200,ease.InOutCirc)
draw(-200,200,200,-200,ease.bezier(0.1,0.4,0.9,0.6))