【发布时间】:2011-05-20 17:17:53
【问题描述】:
给定一个图像,我需要使用 javascript 和 html5 画布创建一个图像被扭曲的动画,就好像它是一面在风中飘扬的旗帜。
奖励:我还希望能够将此动画导出为 png。
【问题讨论】:
-
你知道实际上只有两个浏览器支持动画PNG吗?
标签: javascript css html animation canvas
给定一个图像,我需要使用 javascript 和 html5 画布创建一个图像被扭曲的动画,就好像它是一面在风中飘扬的旗帜。
奖励:我还希望能够将此动画导出为 png。
【问题讨论】:
标签: javascript css html animation canvas
我创建了一个simple example 的旗帜在风中飘扬。这很丑,因为我绘制了标志来填充画布(而不是为标志留下填充物)并且因为我没有尝试抗锯齿。 我也没有尝试提供 3D 阴影,这有助于效果。
我可以在我的机器上的 Chrome v8 中获得 64fps 和 320px 宽的标志。如果您想自己测试速度,请将第 59 行的 fps 更改为 1000 并取消注释第 63 和 82 行;然后它将每 100 帧输出 fps 信息到控制台。
这在 IE8 中不起作用,即使使用 ExCanvas,因为那里没有访问单个像素数据的机制。
编辑:只是为了好玩,我更新了示例,以便在波纹穿过图像时对其进行遮蔽。
Edit2:为了更有趣,我在标志绘图中添加了填充(不再剪裁),并添加了一个“挤压”因素,让您可以使标志的右侧更大或更小原件(用于透视)。由于它会稍微降低性能,因此我将其上传为a separate sample。
【讨论】:
setInterval 替换下一个,以重新创建动画。正如 Eli 指出的那样,对 MNG 的支持(很遗憾)非常稀少,因此即使您创建了一个,它也可能对您没有帮助。