講師回答 / ustbhuangyi
其實(shí)這個(gè)幀動(dòng)畫(huà)庫(kù)我在百度工作的時(shí)候,從一個(gè)實(shí)際項(xiàng)目需求里抽象出來(lái)的。因?yàn)槲覀冇写罅繋瑒?dòng)畫(huà)的需求,但又不想為每個(gè)需求去編寫那些重復(fù)的代碼,所以就想抽象一個(gè)通用的幀動(dòng)畫(huà)庫(kù),方便開(kāi)發(fā)。當(dāng)時(shí)設(shè)計(jì)接口的時(shí)候一個(gè)很重要的原則,就是怎么讓人用起來(lái)爽,就定了鏈?zhǔn)秸{(diào)用這種方式。后來(lái)也發(fā)現(xiàn)這種設(shè)計(jì)和promise的一些設(shè)計(jì)思想不謀而合。一開(kāi)始設(shè)計(jì)的時(shí)候就考慮到大部分接口了,比如loadImage,changePosition,changeSrc,then,repeat,repeatForever,enterFrame,sta...
2016-07-05
講師回答 / ustbhuangyi
首先,要理解JS的執(zhí)行是單線程的,在一輪Event Loop的時(shí)候,會(huì)執(zhí)行所有同步JS代碼。setInterval的運(yùn)行機(jī)制是,將指定的代碼移出本次執(zhí)行,等到下一輪Event Loop時(shí),再檢查是否到了指定時(shí)間。如果到了,就執(zhí)行對(duì)應(yīng)的代碼;如果不到,就等到再下一輪Event Loop時(shí)重新判斷。這意味著,setTimeout指定的代碼,必須等到本次執(zhí)行的所有代碼都執(zhí)行完,才會(huì)執(zhí)行。每一輪Event Loop時(shí),都會(huì)將“任務(wù)隊(duì)列”中需要執(zhí)行的任務(wù),一次執(zhí)行完。setTimeout和setInterval都是...
2016-07-04
講師回答 / ustbhuangyi
關(guān)于素材問(wèn)題,圖片資源都在這里:https://github.com/ustbhuangyi/animation/tree/master/demo源碼在這里:https://github.com/ustbhuangyi/animation
2016-05-26
講師回答 / ustbhuangyi
同學(xué)看的很細(xì),這里window[item.id]確實(shí)不是必須的,它的存在有一定歷史原因~當(dāng)時(shí)開(kāi)發(fā)這個(gè)庫(kù)的時(shí)候,還沒(méi)寫完整的清理邏輯的時(shí)候,為了便于在瀏覽器直接調(diào)試,通過(guò)window['__img_id']可以直接訪問(wèn)到某個(gè)image對(duì)象。
2016-05-26