31 개의 느 린 알고리즘 이 있 습 니 다.색상 의 자동 변환(\#f00\#ff 0000 rgb(255,0,0)형식 에서 색상 연산 형식 으로 마지막 으로\#ff 0000 형식 으로 돌아 갑 니 다),px 단위 의 자동 변환 을 실현 합 니 다.호출 인터페이스:/**대외 인터페이스*Tween 의 예제*@param startProps 시작 속성,단일 속성 또는 배열*@param endProps 종료 속성,단일 속성 또는 배열*@param time Seconds 운동 소모 시간,단위 초*@param anim Type 동작 유형,문자열 형,내부 자체 변환 연산 자*@param delay 지연 시간,얼마 후 운동 을 시작 합 니까?단위 초*/window.rtween=function(startProps,endProps,timeSeconds,animType,delay){var tw=new Tween();tw.start(startProps, endProps, timeSeconds, animType, delay); return tw; } 예 를 들 면 다음 과 같다http://img.jb51.net/online/Tween.htm
function alpha2() { var t = rtween(1,0,1,type); t.run = function(ps) { $('#t').css('opacity',ps); } t.complete = function() { rtween(0,1,1,type).run = function(ps) { $('#t').css('opacity',ps); } } }
// var t = rtween(0,0,0.1); var typeshtml = ''; // for(var i in t.animTypes) { typeshtml+=''; } $('#tweentypeSelect').html(typeshtml); // var tag = $('#tweentypeSelect')[0]; var type = tag.options[tag.selectedIndex].text; $('#tweentypeSelect').change(function(){ type = tag.options[tag.selectedIndex].text; }); // function alpha2() { var t = rtween(1,0,1,type); t.run = function(ps) { $('#t').css('opacity',ps); } t.complete = function() { rtween(0,1,1,type).run = function(ps) { $('#t').css('opacity',ps); } } } function color2() { var t=rtween($('#t').css('color'),'#ff0000',1,type); t.run = function(ps) { $('#t').css('color',ps); } t.complete = function() { rtween($('#t').css('color'),'#ccc',1,type).run = function(ps) { $('#t').css('color',ps); } } } function bgcolor2() { var t=rtween($('#t').css('backgroundColor'),'#ff0000',1,type); t.run = function(ps) { $('#t').css('backgroundColor',ps); } t.complete = function() { rtween($('#t').css('backgroundColor'),'#0000ff',1,type).run = function(ps) { $('#t').css('backgroundColor',ps); } } } function width2() { var t = rtween($('#t').css('width'),'200px',1,type); t.run = function(ps) { $('#t').css('width',ps); } t.complete = function() { rtween($('#t').css('width'),'500px',1,type).run = function(ps) { $('#t').css('width',ps); } } } function left2() { var t = rtween($('#t').offset().left+'px','500px',1,type); t.run = function(ps) { $('#t').css('left',ps); } t.complete = function() { rtween($('#t').css('left'),'10px',1,type).run = function(ps) { $('#t').css('left',ps); } } } [Ctrl+A 전체 주석:외부 Js 를 도입 하려 면 페이지 를 새로 고침 해 야 실행 할 수 있 습 니 다.]목록 에 있 는 슬 로 우 알고리즘 을 선택 하고 앞 단 추 를 누 르 면 원 하 는 슬 로 우 알고리즘 으로 운동 합 니 다소스 코드:http://img.jb51.net/jslib/jquery/rtween.js핵심 코드:function Tween(){this.frame=20; // this._animType = linear; this._delay = 0; // this.run = function(){} this.complete = function(){} } // Tween.prototype.getValue = function(prop) { this._valueType = ”; if(prop.constructor == Array) return prop; // if(typeof(prop) == 'string') { if(isColor(prop)) { this._valueType = ‘color'; return c2a(prop); } if(prop.split('px').length>1) { this._valueType = ‘px'; return [prop.split('px')[0]]; } } return [prop]; } Tween.prototype.setValue = function(prop) { if(this._valueType == ‘color')return a2c(prop); if(this._valueType == ‘px')return prop[0]+'px'; return prop; } Tween.prototype.start = function(startProps, endProps, timeSeconds, animType, delay) { if(animType != undefined)this._animType = this.animTypes[animType]; if(delay != undefined)this._delay = delay; // this._timeSeconds = timeSeconds; this._startTimer = new Date().getTime() + this._delay * 1000; // this._endProps = this.getValue(endProps); this._startProps = this.getValue(startProps); this._currentProps = []; // var $this = this; clearInterval(this._runID); this._runID = setInterval( function(){$this._run();} ,this._frame); } Tween.prototype.stop = function(state) { for(var i in this._startProps) { if(Number(state)>0) this._currentProps[i] = this._endProps[i]; else if(Number(state)<0) this._currentProps[i] = this._startProps[i]; } this.callListener(); this.complete(); // clearInterval(this._runID); } Tween.prototype.callListener = function() { this.run(this.setValue(this._currentProps)); } Tween.prototype._run = function() { if ( new Date().getTime()- this._startTimer< 0) return; var isEnd = false; // for(var i in this._startProps) { this._currentProps[i] = this._animType( new Date().getTime()-this._startTimer,Number(this._startProps[i]),Number(this._endProps[i])-Number(this._startProps[i]),this._timeSeconds * 1000); // if(this._startTimer + (this._timeSeconds * 1000) <= new Date().getTime()) { this._currentProps[i] = this._endProps[i]; isEnd = true; } } // if(isEnd)this.stop(); else this.callListener(); }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: