변수를 내 단계 함수에 전달하면서 벽으로 뛰어 들어 최종 크로스 브라우저 대체 애니메이션을 처리하십시오. 여기에 일반적인 용도의 애니메이션 메서드를 만들었습니다.변수를 .animate 단계 함수에 전달하십시오.
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); };}});
};
}
이것은 필요한 모든 것을 작동시키고 애니메이션으로 만듭니다. 그러나 Animator 함수를 호출하고 속성을 애니메이션하려면 step 함수를 사용하여 시도하고 있어요. 다음은 호출입니다.
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는 움직이는 객체이고 aniArgs는 모든 CSS 이름/값이 포함 된 객체 리터럴이며 속도는 속도이며 easing은 모든 CSS 이름/easing 값을 포함하는 객체 리터럴이고 stepFunction은 위에 선언 된 함수 변수이며 null입니다 실행할 완전한 기능이 없음을 나타냅니다.
모든 것이 잘 작동하지만 단계 기능으로 인해 다양한 문제가 발생합니다. 나는 실제 스텝 기능 안에서 각도의 가치를 얻는 것처럼 보이지 않는다. 단계 내에서 지금은 로그 할 수 있고 FX는 잘 작동하지만 초기 0 값으로 각도를 전달할 수 없기 때문에 증가시킬 수 있습니다.
내가 잘못 가고있는 아이디어가 있습니까? 감사!
'stepFunction = function (now, fx) {...'와 같이'stepFunction'에 대한 인수 목록에서 'angle'을 제거해보십시오. 이것은 포함 된 스코프로부터 'angle'을 가져와야하지만, 그것이 작동하는지 확실히 알기에는 충분히 확신 할 수 없다. –
아니, 원래 시도. 각도는 먼저 0으로 정의 된 다음 애니메이션 중에 카운터가 올바르게 작동하려면 0으로 단계 함수에 전달되어야합니다. – Aaron
@ F.J. 그것은 필요한 것이 아니기 때문에 실행됩니다. 왜냐하면 단계 함수는 알 수없는 간격과 애니메이션 기간 내에서 알 수없는 횟수로 호출되기 때문입니다. 각 단계마다 '지금'에서 회전을 새로 계산해야 할 필요가 있다고 생각합니다. –