ステップ関数に変数を渡して最終的なクロス ブラウザー フォールバック アニメーションを処理しようとしているときに、壁にぶつかりました。ここで汎用アニメーションメソッドを構築しました:
Animator:function(obj,aniArgs,duration,aniEasArgs,delay,stepFunction,completeFunction){
obj.stop(true,true).animate(aniArgs,
{duration:parseInt(duration,10),queue:false,specialEasing:aniEasArgs,
step:function(now,fx){
if($.isFunction(stepFunction)){
stepFunction.apply(this,arguments);
};
},complete:function(){
if($.isFunction(completeFunction)){
completeFunction.apply(this,arguments); };}});
};
}
これは機能し、必要なものすべてをアニメーション化します。ただし、アニメーター関数を呼び出し、ステップ関数を使用してプロパティをアニメーション化しようとしています。呼び出しは次のとおりです。
var angle=0,
stepFunction=function(now,fx,angle){
angle+=1;
$(this).css({"-ms-transform":"rotate("+angle+"deg)"});
};
Animator(obj,aniArgs,speed,easing,0,stepFunction,null);
渡される他のすべての引数は問題なく、適切にチェックアウトされます。obj はアニメーション化される obj、aniArgs はアニメーション化するすべての CSS 名/値を含むオブジェクト リテラル、speed は速度、easing はすべての CSS 名/イージング値を含むオブジェクト リテラル、stepFunction は上記で宣言された関数変数、および null実行する完全な機能がないことを示しています。
すべてがうまく機能していますが、ステップ関数で変数の問題が発生しています。実際のステップ関数内で角度の値を取得できないようです。ステップ内で、現在と fx をログに記録できます。これらは正常に機能していますが、初期値 0 で角度を渡すことができないため、角度をインクリメントできます。
私が間違っているアイデアはありますか?ありがとう!