上個圖先vue
在這個基礎上實現另外的兩個動畫:搖擺和點擊縮放。git
須要瞭解canvas的旋轉API是以左上方(0,0)爲中心點進行旋轉,像這樣:
github
所以咱們要進行以紅包中心點爲準進行旋轉,須要使用另外一個API:translate()來變換畫布的座標。canvas
ctx.translate(紅包左上方的x座標 + 紅包的寬度/2, 紅包左上方的y座標 + 紅包的高度/2);
ctx.rotate(rotate); // 要旋轉的角度
ctx.translate(-紅包左上方的x座標 - 紅包的寬度/2, -紅包左上方的y座標 - 紅包的高度/2);複製代碼
同理可得紅包的縮放效果。
bash
最後,點擊紅包事件監聽綁定在canvas上,當點擊canvas時獲取鼠標的座標,而後跟當前紅包的座標進行比對便可。函數
if(Math.abs(紅包左上角x座標- 鼠標x座標) < 紅包寬度 && Math.abs(紅包左上角y座標 - 鼠標y座標) < 紅包高度){
// 可作計分等功能
}複製代碼
這裏要注意,由於動畫很快,有的時候點擊紅包沒有反應,能夠對點擊的面積適當的加大一點。post
貼個github ,有須要的自取,若是以爲還ok的話,點個star吧動畫