跟著老師的視頻過了一遍所有例子,實在是太棒了,非常期待老師的下一期canvas課程,求早點更新(●'?'●)
2015-05-10
最新回答 / 小王子抓貓咪
save和restore是用于繪制環境的保存與還原,如果你不寫這一對方法,你前面進行的操作(全屏先涂#333)就不會被還原,而是在原來的繪制環境(簡單理解就是原圖形)上進行新的操作,這樣你第二次畫的內容都是在原圖上畫的。clip與你第一次restore的順序沒有關系,你可以把每一幀的繪畫放在一個save和restore之間,最重要的是你需要在clip前調用beginpath方法,如果不調用beginpath你每次的剪切圓不會消失而是一直保持在畫面上。調用一個beginpath,closepath就可以啦。
2015-05-05
剛開始我的miterLimit也沒看出效果,查了下文檔
“當寬線條使用設置為 "miter" 的 lineJoin 屬性繪制并且兩條線段以銳角相交的時候,所得的斜面可能相當長。當斜面太長,就會變得不協調。miterLimit 屬性為斜面的長度設置一個上限。這個屬性表示斜面長度和線條長度的比值。默認是 10,意味著一個斜面的長度不應該超過線條寬度的 10 倍。如果斜面達到這個長度,它就變成斜角了。”
然后重新設置了下內圓半徑和miterlimit的值 就看出效果了。
“當寬線條使用設置為 "miter" 的 lineJoin 屬性繪制并且兩條線段以銳角相交的時候,所得的斜面可能相當長。當斜面太長,就會變得不協調。miterLimit 屬性為斜面的長度設置一個上限。這個屬性表示斜面長度和線條長度的比值。默認是 10,意味著一個斜面的長度不應該超過線條寬度的 10 倍。如果斜面達到這個長度,它就變成斜角了。”
然后重新設置了下內圓半徑和miterlimit的值 就看出效果了。
2015-05-03
最新回答 / 小王子抓貓咪
你用bezierCurveTo畫的多復雜的圖形都能用closePath方法閉合鼠標點擊可以獲取x y坐標通過context.isPointInPath這個方法來進行判斷啊
2015-04-27