最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一個(gè)簡(jiǎn)單的js動(dòng)畫效果代碼

 更新時(shí)間:2010年07月20日 01:23:30   作者:  
前段時(shí)間為了做動(dòng)畫,學(xué)習(xí)了一下tween算法的使用,這幾天根據(jù)tween算法,然后根據(jù)各種材料參考,做了一個(gè)簡(jiǎn)單的動(dòng)畫函數(shù).
實(shí)現(xiàn)的功能:移動(dòng),暫停,恢復(fù),停止.

未實(shí)現(xiàn)的功能:無法實(shí)現(xiàn)單位換算,不能實(shí)現(xiàn)顏色漸變(還有很多,有待完善...)

代碼中的使用方法如下:
復(fù)制代碼 代碼如下:

var $m = $M("divAnimate");

_("btnAnimate").onclick = function(){
this.disabled = true;
var that = this;
$m.animate({left:"300px",top:"100px",width:"300px", height:"200px",opacity:0.3},{duration:5000,easing:Tween.Back.easeInOut}).delay(200)
.animate({left:"50px",top:"300px",width:"150px",height:"100px",opacity:0.8},{duration:2000,easing:Tween.Elastic.easeInOut,
callback:function(){
that.disabled = false;
}
});
}
_("btnPause").onclick = function(){
$m.pause();
this.disabled = true;
_("btnResume").disabled = false;
}
_("btnResume").disabled = true;
_("btnResume").onclick = function(){
$m.resume();
this.disabled = true;
_("btnPause").disabled = false;
}

_("btnStop").onclick = function(){
$m.stop();
_("btnAnimate").disabled = false;
}


功能實(shí)現(xiàn):
復(fù)制代碼 代碼如下:

/* 簡(jiǎn)單動(dòng)畫方法
* 未實(shí)現(xiàn)單位換算
*/
var $M = function(obj){
var elem = ("string" === typeof obj )?document.getElementById(obj):obj;
var _this = {},props = {},timeId,isBusy = false,isPause = false;
var queue = [],_current;
//直線運(yùn)動(dòng)算法
function Linear(t,b,c,d){ return c*t/d + b;}
function setCss(className,value){
if(className == "opacity"){
if(document.defaultView){
elem.style["opacity"] = value;
} else {
elem.style["filter"] = 'alpha(opacity=' + 100 * value + ')';
}
} else {
elem.style[className] = value;
}
}
function getCss(className){
if(className == "opacity"){
var ret = "";
if(document.defaultView){
ret = document.defaultView.getComputedStyle(elem,null)['opacity'] || 1;
} else {
ret = elem.currentStyle['filter']?(elem.currentStyle['filter'].match(/^alpha\(opacity=([\d\.]+)\)$/))[1]/100 : 1;
}
return ret.toString();
} else {
return elem.style[className].toString();
}
}

function _move(params,easing,st,ht,callback){
var t = ((new Date()).getTime() - st);
_current.t = t;
if(isPause){return;}
easing = easing||Linear;
ht = ht || 500;
for(var p in params){
if(!props[p]){
var iv = parseFloat(getCss(p)) || 0;
var ev = parseFloat(params[p]);
props[p] = {
iv:iv,
iu:iv?getCss(p).substring(iv.toString().length):null,
ev:ev,
eu:params[p].toString().substring(ev.toString().length)
}
//TODO(初始值的單位和目標(biāo)值的單位不相同需要處理)
}
if(t >= ht){t = ht;}
var nv = easing(t,props[p].iv,(props[p].ev - props[p].iv),ht);
nv = parseFloat(nv);
setCss(p,nv + props[p].eu);
}

if(t < ht){
timeId = setTimeout(function(){
_move(params,easing,st,ht,callback);
},13);
} else {
props = {};
isBusy = false;
if(callback){
callback();
}
run();
}
}
function run(){
if(!isBusy && queue.length != 0){
var o = queue.shift();
var _delay = 0;
while(o && o.delay){
_delay += o.delay;
o = queue.shift();
}
if(o){
_current = o;
isBusy = true;
setTimeout(function(){
var st = (new Date()).getTime();
_move(o.params,o.options.easing,st,o.options.duration,o.options.callback);
},_delay);
}
}
}

var _this = {
animate:function(params,options){
queue.push({params:params,options:options});
isPause = false;
run();
return _this;
},
delay:function(ms){
queue.push({delay:ms});
return _this;
},
pause:function(){
isPause = true;
return _this;
},
resume:function(){
if(_current){
var o = _current;
isPause = false;
var st = (new Date()).getTime() - _current.t;
_move(o.params,o.options.easing,st,o.options.duration,o.options.callback);
return _this;
}
},
stop:function(){
isPause = true;
isBusy = false;
queue = [];
props = {};
return _this;
}
};
return _this;
}

參考地址:
http://m.fzitv.net/article/24309.htm

相關(guān)文章

  • 使用Axios攔截器優(yōu)化HTTP請(qǐng)求與響應(yīng)的實(shí)踐案例

    使用Axios攔截器優(yōu)化HTTP請(qǐng)求與響應(yīng)的實(shí)踐案例

    在前端開發(fā)中,HTTP 請(qǐng)求是與后端交互的重要方式,為了提高代碼的可維護(hù)性、復(fù)用性以及用戶體驗(yàn),使用 Axios 攔截器是非常常見的做法,本文將詳細(xì)介紹如何使用 Axios 的請(qǐng)求攔截器和響應(yīng)攔截器,需要的朋友可以參考下
    2024-11-11
  • 原生javascript制作貪吃蛇小游戲的方法分析

    原生javascript制作貪吃蛇小游戲的方法分析

    這篇文章主要介紹了原生javascript制作貪吃蛇小游戲的方法,結(jié)合具體實(shí)例形式分析了JavaScript實(shí)現(xiàn)貪吃蛇小游戲的具體步驟、功能實(shí)現(xiàn)、數(shù)值運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下
    2020-02-02
  • 淺談regExp的test方法取得的值變化的原因及處理方法

    淺談regExp的test方法取得的值變化的原因及處理方法

    下面小編就為大家?guī)硪黄獪\談regExp的test方法取得的值變化的原因及處理方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • JavaScript常用工具函數(shù)大全

    JavaScript常用工具函數(shù)大全

    這篇文章主要介紹了JavaScript常用工具函數(shù),匯總整理了各種JavaScript常用工具函數(shù),包括獲取、判斷、轉(zhuǎn)換、設(shè)置等相關(guān)功能函數(shù)的定義與使用方法,需要的朋友可以參考下
    2020-05-05
  • JavaScript獲取當(dāng)前日期是星期幾的方法

    JavaScript獲取當(dāng)前日期是星期幾的方法

    這篇文章主要介紹了JavaScript獲取當(dāng)前日期是星期幾的方法,涉及javascript中g(shù)etDay函數(shù)獲取日期的技巧,需要的朋友可以參考下
    2015-04-04
  • js實(shí)現(xiàn)防止被iframe的方法

    js實(shí)現(xiàn)防止被iframe的方法

    這篇文章主要介紹了js實(shí)現(xiàn)防止被iframe的方法,實(shí)例分析了兩種比較常用的javascript防止頁面被iframe的技巧,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-07-07
  • 完美解決IE9瀏覽器出現(xiàn)的對(duì)象未定義問題

    完美解決IE9瀏覽器出現(xiàn)的對(duì)象未定義問題

    下面小編就為大家?guī)硪黄昝澜鉀QIE9瀏覽器出現(xiàn)的對(duì)象未定義問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,祝大家游戲愉快哦
    2016-09-09
  • js實(shí)現(xiàn)右下角窗口彈出窗口效果

    js實(shí)現(xiàn)右下角窗口彈出窗口效果

    好的朋友經(jīng)常需要彈出信息,這個(gè)功能不錯(cuò)
    2008-09-09
  • 解析OpenLayers 3加載矢量地圖源的問題

    解析OpenLayers 3加載矢量地圖源的問題

    矢量圖形最大的優(yōu)點(diǎn)是無論放大、縮小或旋轉(zhuǎn)等不會(huì)失真。在地圖中存在著大量的應(yīng)用,是地圖數(shù)據(jù)中非常重要的組成部分,這篇文章主要介紹了OpenLayers 3加載矢量地圖源的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • JavaScript搜索字符串并將搜索結(jié)果返回到字符串的方法

    JavaScript搜索字符串并將搜索結(jié)果返回到字符串的方法

    這篇文章主要介紹了JavaScript搜索字符串并將搜索結(jié)果返回到字符串的方法,涉及javascript中match方法操作字符串的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04

最新評(píng)論

西充县| 广宗县| 司法| 雷山县| 龙门县| 延吉市| 大邑县| 广昌县| 南投县| 大余县| 运城市| 九龙县| 兰坪| 迭部县| 六盘水市| 永济市| 乌什县| 荣昌县| 都江堰市| 清徐县| 湾仔区| 青河县| 山阳县| 忻城县| 睢宁县| 黎川县| 葵青区| 高要市| 山丹县| 虞城县| 聂拉木县| 遵义县| 翁源县| 平潭县| 古交市| 黄浦区| 沙河市| 龙岩市| 渝中区| 和静县| 化德县|