首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用全局复合操作实现形状的HTML5重叠

用全局复合操作实现形状的HTML5重叠
EN

Stack Overflow用户
提问于 2014-02-05 16:52:40
回答 2查看 417关注 0票数 1

我想做这个动画-海平面上升的海水吞没一个小山有坑。当水退去时,有些会留在口袋里,再一次当水位上升时,它们就会成为一体。这个动画无限期地继续下去。现在我试着用两种方法做这件事,

(一)随着海水的流动,将水池中的水抽吸和清除。ctx.bezierCurveTo(x1,y1,x2,y2,end_x,end_y);随着水的流动,我改变了第一和第二控制点,使基座从小平面变为球形,反之亦然。但不是光滑的,第二个坑也有不规则的底座,所以不可能。

2)我做了必要的口袋,装满了水,玩了不透明的游戏,使口袋里的水和海水混合在一起。同样,这种方法并不能给出平滑的外观。

应该是这样的:

底图是画布的背景,我只需要控制水流。

请建议一下该怎么做。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-05 17:19:10

您可以使用复合使您的海水无缝地侵入您的山地

特别是“源-出”组合只允许在不重叠任何现有内容的情况下绘制新内容。

因此,“源出”合成将允许您画新的海水,只有当它不重叠现有的山。

当水上升时:

  1. 透明帆布
  2. 设置globalCompositeOperation=“源-over”//默认情况下,新绘图将透支。
  3. 画你的山
  4. 设置globalCompositeOperation=“源出”//新的海水不会溢出现有的山脉。
  5. 拉起上升的海水
  6. 增加海水高度
  7. 重复使用1号,直到你的海水达到所需的高度。

当水掉下来时:

  1. 透明帆布
  2. 设置globalCompositeOperation=“源-over”//默认情况下,新绘图将透支。
  3. 画你的山
  4. 设置globalCompositeOperation=“源出”//新的海水不会溢出现有的山脉。
  5. 只在您的山的坑中提取保留的海水
  6. 吸引掉的海水
  7. 降低海水高度
  8. 重复使用1号,直到你的海水达到所需的高度。
票数 0
EN

Stack Overflow用户

发布于 2014-02-06 21:35:57

经过大量的思考,找到了一个两步的方法。

步骤-1 >>

1)海上取水(目的地) 2)设置ctx.globalCompositeOperation="destination-out";3)引水池水(源)

这将消除部分源与dest的重叠。因此,用一个中空的空间(透明)代替水池来创造海水。现在,这个有洞的图像变成了最大的图像。图中我只需画池水,以保持水的一致性。

步骤2 >>

1)设置ctx.globalCompositeOperation="destination-atop";2)抽池水(源)

这将是最吸引人的。只有在最好的地方。和源重叠,也就是dest的时候。在中空区域形成具有洞(透明代替池)和池重叠海水的图像。需要注意的是,池水就像海水的一个子集,所以我不需要担心池水(源)会像“目的地-顶楼”那样被创造出来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21583411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档