Minakata的博客

世界上没有游戏制造机,有的只是艰辛的劳动。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2011年10月2日

摘要: 由于我们是用脚本去操控 canvas 对象,这样要实现一些交互动画也是相当容易的。只不过,canvas 从来都不是专门为动画而设计的(不像 Flash),难免会有些限制。可能最大的限制就是图像一旦绘制出来,它就是一直保持那样了。如果需要移动它,我们不得不对所有东西(包括之前的)进行重绘。重绘是相当费时的,而且性能很依赖于电脑的速度。基本动画的步骤 Basic animation steps画一帧,你需要以下一些步骤:清空 canvas 除非接下来要画的内容会完全充满 canvas (例如背景图),否则你需要清空所有。最简单的做法就是用 clearRect 方法。保存 canvas 状态 如果你 阅读全文

posted @ 2011-10-02 15:14 Minakata 阅读(601) 评论(0) 推荐(0) 编辑

摘要: 之前的例子里面,我们总是将一个图形画在另一个之上,大多数情况下,这样是不够的。比如说,它这样受制于图形的绘制顺序。不过,我们可以利用 globalCompositeOperation 属性来改变这些做法。globalCompositeOperation我们不仅可以在已有图形后面再画新图形,还可以用来遮盖,清除(比 clearRect 方法强劲得多)某些区域。globalCompositeOperation = typetype 是下面 12 种字符串值之一,注意:下面所有例子中,蓝色方块是先绘制的,即“已有的 canvas 内容”,红色圆形是后面绘制,即“新图形”。source-over (d 阅读全文

posted @ 2011-10-02 12:48 Minakata 阅读(309) 评论(0) 推荐(0) 编辑

摘要: 状态的保存和恢复 Saving and restoring state在了解变形之前,我先介绍一下两个在你开始绘制复杂图形就必不可少的方法。save()restore()save 和 restore 方法是用来保存和恢复 canvas 状态的,都没有参数。Canvas 的状态就是当前画面应用的所有样式和变形的一个快照。Canvas 状态是以堆(stack)的方式保存的,每一次调用 save 方法,当前的状态就会被推入堆中保存起来。你可以调用任意多次 save 方法。每一次调用 restore 方法,上一个保存的状态就从堆中弹出,所有设定都恢复。save 和 restore 的应用例子我们尝试用 阅读全文

posted @ 2011-10-02 01:31 Minakata 阅读(457) 评论(0) 推荐(0) 编辑