初学,拿来做点东西,结果发现这货不能斜向绘制文字,只能先旋转,绘制,再转回去,这算是开胃菜。
接着,用那个 translate 为旋转移动原点,这移动竟然是叠加的,translate(100,100),再 translate(1,1),原点就变成了 (101,101),而且一旦旋转后坐标系也变了,也就是说要找回原点,我必须逆着旋转一次,再逆着 translate 回去,一旦有些什么岔子,原点就丢失了,没错,它就丢失了,再也找不到了。
后来,我想匹配一个斜向矩形的点击事件,为了方便我就想先把矩形转成正放的然后再匹配,结果失败了,我发现旋转后的矩形和我的鼠标坐标不是同一个参考系,而鼠标坐标是通过 mousemove 监听得到的,我没有办法在新的参考系中更新这个坐标。
但是我还是错了,又过了一会,我才发现鼠标坐标是参照整个 canvas 画布的,而无论怎么旋转,都不会改变,也就是要匹配旋转后的鼠标点击事件,我不得不先对鼠标坐标做一次坐标变换。
引用网上一句话,用 canvas 做东西就要“从橡胶树开始造轮子”,造出矢量等工具之后才可能谈得上开发效率。我现在觉得 canvas 唯一的作用就是做 banner 广告,稍微有一点交互都会累死人。
不知道各位会用什么做图形丰富的交互应用,flash,svg,canvas,DOM? 之前都说 js+canvas 可以取代 flash,但是现在看来。。。