JavaScript “完美運動架構”

來源:互聯網
上載者:User

標籤:

/* “完美運動架構”,所謂“完美”,就是可以實現多個參數,多個物體運動互不影響的一個運動函數move()。 * 大致結構如下:運動架構 EXP: move(obj,{width:200,height:200},fnEnd) *         obj: 運動物體 *         json: 運動屬性和運動目標值的json集合,{‘width‘:200,‘height‘:200} *         sv: 運動的速度,speed-value,值越小速度越大 *         fnEnd: 運動結束後的回呼函數 */function move(obj, json, sv, fnEnd) {    //取CSS樣式值    function getStyle(obj, attr) {            if (obj.currentStyle) {                return obj.currentStyle[attr];            } else {                return getComputedStyle(obj, false)[attr];            }        }        //運動開始              clearInterval(obj.timer);    obj.timer = setInterval(function() {        var isAllCompleted = true; //假設全部運動都完成了        for (attr in json) {            var attrValue = 0;            switch (attr) {                case ‘opacity‘:                    attrValue = Math.round(parseFloat(getStyle(obj, attr)) * 100);                    break;                default:                    attrValue = parseInt(getStyle(obj, attr));            }            //如果沒有傳入sv,則為4            var speed = (json[attr] - attrValue) / (sv || 4);            speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);            //如果迴圈過程中存在尚未結束的運動,isAllCompleted為假            if (attrValue != json[attr]) isAllCompleted = false;            switch (attr) {                case ‘opacity‘:                    {                        obj.style.filter = "alpha(opacity=" + (attrValue + speed) + ")";                        obj.style.opacity = (attrValue + speed) / 100;                    };                    break;                default:                    obj.style[attr] = attrValue + speed + ‘px‘;            }        } //for in end!        //所有迴圈結束後,只有當全部運動結束後(isAllCompleted=true)時才關閉定時器        if (isAllCompleted) {            clearInterval(obj.timer);            if (fnEnd) fnEnd();        }    }, 30);} //move() end !

來自 <http://www.tangbc.com/blog/#frontends/104> 

JavaScript “完美運動架構”

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.