javascript - 在移相器 3 中移动遮罩的问题
问题描述
我对面具行为的理解存在问题。我在容器内有一个圆形图像,然后将另一个稍小的图像放在顶部以在其周围创建一种边框。为了确保我可以使用各种图像,我将我从图形形状创建的圆形蒙版应用于较小的图像,以便它始终适合,即使它是矩形的。我也将形状添加到容器中。
Container
- biggerImage
- graphics shape
- smallerImage with mask
现在我想开始移动容器,图像和蒙版都相对于容器移动。我的问题是我似乎无法让面具移动。阅读文档后,我了解到要更改蒙版位置,您需要移动创建它的形状而不是实际蒙版。通过移动容器,我理论上也可以移动形状,但是由于形状的实际位置从未真正改变(它是 0,0 - 相对于它所在的容器),因此蒙版不会移动一英寸。它位于我画布左上角的场景原点 (0,0)。
我有点理解为什么会这样,但我似乎无法找到解决方案。我想过将遮罩应用到整个容器,这样我就不必担心相对位置,但是我的第一张图像也会受到遮罩的影响,这不是我打算做的。也许有一种方法可以告诉面具随着容器而不是形状本身移动,或者也许有人对我的问题有另一种解决方案。我在下面包含了一个代码示例。
//create draggable container to move everything around
let container = this.add.container(200, 200).setInteractive({hitArea: new Phaser.Geom.Circle(0, 0, 20), hitAreaCallback: Phaser.Geom.Circle.Contains, draggable: true});
//create big circle image and add it to container
let biggerImage = this.add.image(0, 0, 'circleImage').setDisplaySize(40, 40).setTintFill(0xFFFFFF);
container.add(biggerImage);
//create smaller circle to use as a mask
let shape = this.make.graphics().fillCircle(0, 0, 15);
container.add(shape);
//create small rectangular image, apply mask and add it to container
let smallerImage = this.add.image(0, 0, 'rectImage').setMask(shape.createGeometryMask());
container.add(smallerImage);
下面是我想要的样子。
请注意这个人的较小图像如何受到面具的影响,而面具后面的粉红色圆圈则没有。这是有效的,因为我已将图形形状的位置设置为其所在容器的位置。蒙版现在将始终保持在该位置,而不是 0,0,但它仍然不会移动。
解决方案
推荐阅读
- java - 何时在 Springs @Configuration 中将 proxyBeanMethods 设置为 false?
- java - Android:字符集是否取决于语言?
- python - 在 python 中使用 cv2.findContours() 时,我的 python 代码出现了 ValueError。-> 没有足够的值来解包(预期 3,得到 2)
- angular - 如何使用 Angular 和 PHP 上传图片
- c++ - 如何在 C++ 中使用弱函数
- c# - 控件 ItemsSource 绑定不会在 ClickOnce Web Published WPF 应用程序上更新
- excel - 在 VBA 中使用自动填充时如何更改目标范围
- redirect - 如何阻止使用 url 直接访问多个感谢页面?
- wordpress - 显示未显示缩放按钮的 woo-commerce 产品库
- php - 如何使用编程创建具有公共访问权限的谷歌表格