我想做这个动画-海平面上升的海水吞没一个小山有坑。当水退去时,有些会留在口袋里,再一次当水位上升时,它们就会成为一体。这个动画无限期地继续下去。现在我试着用两种方法做这件事,
(一)随着海水的流动,将水池中的水抽吸和清除。ctx.bezierCurveTo(x1,y1,x2,y2,end_x,end_y);随着水的流动,我改变了第一和第二控制点,使基座从小平面变为球形,反之亦然。但不是光滑的,第二个坑也有不规则的底座,所以不可能。
2)我做了必要的口袋,装满了水,玩了不透明的游戏,使口袋里的水和海水混合在一起。同样,这种方法并不能给出平滑的外观。
应该是这样的:

底图是画布的背景,我只需要控制水流。
请建议一下该怎么做。
发布于 2014-02-05 17:19:10
您可以使用复合使您的海水无缝地侵入您的山地
特别是“源-出”组合只允许在不重叠任何现有内容的情况下绘制新内容。
因此,“源出”合成将允许您画新的海水,只有当它不重叠现有的山。
当水上升时:
当水掉下来时:
发布于 2014-02-06 21:35:57
经过大量的思考,找到了一个两步的方法。
步骤-1 >>
1)海上取水(目的地) 2)设置ctx.globalCompositeOperation="destination-out";3)引水池水(源)
这将消除部分源与dest的重叠。因此,用一个中空的空间(透明)代替水池来创造海水。现在,这个有洞的图像变成了最大的图像。图中我只需画池水,以保持水的一致性。
步骤2 >>
1)设置ctx.globalCompositeOperation="destination-atop";2)抽池水(源)
这将是最吸引人的。只有在最好的地方。和源重叠,也就是dest的时候。在中空区域形成具有洞(透明代替池)和池重叠海水的图像。需要注意的是,池水就像海水的一个子集,所以我不需要担心池水(源)会像“目的地-顶楼”那样被创造出来。
https://stackoverflow.com/questions/21583411
复制相似问题