這篇文章給大家分享的是有關(guān)JS如何實(shí)現(xiàn)放煙花效果的內(nèi)容。小編覺得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過來看看吧。
成都網(wǎng)絡(luò)公司-成都網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)十余年經(jīng)驗(yàn)成就非凡,專業(yè)從事網(wǎng)站制作、成都做網(wǎng)站,成都網(wǎng)頁設(shè)計(jì),成都網(wǎng)頁制作,軟文發(fā)布平臺(tái),廣告投放等。十余年來已成功提供全面的成都網(wǎng)站建設(shè)方案,打造行業(yè)特色的成都網(wǎng)站建設(shè)案例,建站熱線:18982081108,我們期待您的來電!
具體內(nèi)容如下
放煙花——欣欣博客
move.js
/** * * @param {Object} obj 目標(biāo)對(duì)象 * @param {Object} json 要改變的屬性 * @param {Object} extend {buffer,callback} 當(dāng)buffer為true時(shí)為彈性運(yùn)動(dòng) * callback會(huì)在運(yùn)動(dòng)結(jié)束時(shí),被執(zhí)行 * animate(obj, {top:500, left: 300}, {callback:function(){}, buffer: true}) */ function animate(obj, json, extend){ extend = extend || {}; if(obj.isMoving){ return; } else { stop(); obj.isMoving = true; } //obj = Object.assgin(obj,extend); obj.buffer = extend.buffer; obj.callback = extend.callback; obj.timerlist = {}; //為每一個(gè)屬性添加一個(gè)定時(shí)器 for(var attr in json){ (function(attr){ obj.timerlist[attr] = {speed:0}; obj.timerlist[attr].timer = setInterval(function(){ //首先得到當(dāng)前值 var iNow = 0; if(attr == "opacity"){ iNow = getStyle(obj, attr) * 100; } else { iNow = getStyle(obj, attr); } var speed = obj.timerlist[attr].speed; //根據(jù)目標(biāo)值,計(jì)算需要的速度 if(obj.buffer==true){ speed += (json[attr] - iNow)/5; speed *= 0.75; } else { speed = (json[attr] - iNow)/5; } //當(dāng)無限接近目標(biāo)值時(shí),停止定時(shí)器 if(Math.abs(iNow - json[attr]) < 0.5){ clearInterval(obj.timerlist[attr].timer); delete obj.timerlist[attr]; if(getObjLength(obj.timerlist)==0){//所有定時(shí)器已停止 stop(); obj.callback ? obj.callback() : ""; } } else { //根據(jù)速度,修改當(dāng)前值 if(attr == "opacity"){ obj.style.opacity = (iNow+speed)/100; obj.style.filter = 'alpha(opacity=' + parseFloat(iNow+speed) + ')'; } else { obj.style[attr] = iNow+speed+"px"; } obj.timerlist[attr].speed = speed; } }, 30); })(attr); } function clearTimer(){ for(var i in obj.timerlist){ clearInterval(obj.timerlist[i]); } } function getStyle(obj, attr){ if(obj.currentStyle){ return isNaN(parseFloat(obj.currentStyle[attr])) ? obj.style[attr]=0 : parseFloat(obj.currentStyle[attr]); } else { return isNaN(parseFloat(getComputedStyle(obj, null)[attr])) ? obj.style[attr]=0 : parseFloat(getComputedStyle(obj, null)[attr]); } } function getObjLength(obj){ var n = 0; for(var i in obj){ n++; } return n; } function stop(){ clearTimer();//清除所有定時(shí)器 obj.isMoving = false; } }
感謝各位的閱讀!關(guān)于“JS如何實(shí)現(xiàn)放煙花效果”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!