??最近做一個大DEMO去了,把瀑布流,曝光,輪播,跳轉,回到首頁全部整理成了模塊,使用了require.js和r.js去整理了這些模塊,最大的體會就是,看文章和教程,仿佛自己都會了,baseUrl,paths,define···最后上手的時候才真正記牢了;
??今天在微信一個公眾號文章里,說如何分析問題,給出了做一個拋物線的DEMO的需求考我們,不能比科班,人家馬上就Google了對應的公式,模塊,引入頁面··OK,完成了;我這個非科班菜鳥只能老老實實分析,下面介紹一下我分析這個DEMO的思路;
- 1.一個拋物線,學過高中物理的都知道,分解成X軸和Y軸的運動,在這里X軸可以一直運動,Y軸會在某一個點下降,最后停止;
- 2.抽象成數學模型,在一個二維空間中,球的移動,其實就是不斷修改其位置坐標,如果時間粒度足夠小,那么用微積分的思維就可以理解成一個連貫的動作;
- 3.回到代碼中:
- 1:一個球就是一個
div
,寬高設定相等,border-radius:50%; - 2:移動就是讓父容器的
position:relative
,球的position:absolute
;利用js修改其left
及top
就可以實現移動; - 3:運動就是不斷的移動,用上了
setInterval
,不斷循環去修改位置,就達到運動的效果; - 4:最后拋物線會有一個頂點,之后就下降,最后停止,JS的修改位置,X軸上一直在修改,Y軸在到達頂點之后會下降,最終X軸和Y軸雙方都停止修改,完成一個拋物線,那么最終的結果就是清除這個
setInterval
,世界重新回歸和平,贊美太陽;
- 1:一個球就是一個
其實我就做了上述三件微小的事情,很慚愧;
??中間還有很多細節,例如球的初始位置,如何界定球到達碰撞邊界,如何切換Y軸上的位移,如何累加位移,以及如何Debug···不過幸運的是我花了,我也不知道花了多久,反正思考和實現的過程是非常快的,也是非常享受的,最后我就放出DEMO觀看地址,以及Github的代碼;