0

我正在尝试在 ActionScript 3 中对圆形进行蒙版(我使用的是 Flex AIR 框架)。它与生态足迹有关,每个圆圈代表一个地球。这张生态足迹图片在一个容器内。问题是面具似乎是固定的,尽管图片浮动。当我向下滚动容器时,图片会滚动得很好,但蒙版不会,剪掉图片的顶部。我已将这个和其他 UIMovieClip 放在 VBox 容器中。该 VBox 容器位于另一个 VBox 容器中。如果我将前一个 VBox 容器放在后者的底部,则蒙版不会随之而来,因此圆圈不会被蒙版。

mask = new UIMovieClip();
mask.graphics.beginFill(0xFFFFFF);
mask.graphics.drawRect(radius,radius+radius*2*(1-(ecoWeight-Math.floor(ecoWeight))),1000,1000);
mask.graphics.endFill();    
earth = new UIMovieClip();    
earth.graphics.beginFill(0xFFFFFF);
earth.graphics.drawCircle(radius,radius,radius);
earth.mask=mask;
earth.graphics.endFill();
4

3 回答 3

1

将掩码添加到 VBox 容器:

myVBox.addChild(mask);

或将遮罩和形状都放入容器中,然后移动容器:

var bundle:Sprite = new Sprite();

mask = new UIMovieClip();
...

earth = new UIMovieClip();    
...

bundle.addChild(mask);
bundle.addChild(earth);

myVBox.addChild(bundle);

bundle.x = 100;
bundle.y = 100;

这将大地和面具固定在一起。我不熟悉 UIMovieClip,但你可以用我想象的 UIMovieClip 替换 Sprite。这是第一个更好的解决方案,因为如果你不将它们捆绑在一起,如果你移除地球,你不太可能记得移除面具。

希望这可以帮助。

于 2009-12-07T10:19:30.453 回答
0

口罩很烂,而且经常不符合他们的期望。BlendMode.ALPHA 与 BlendMode.LAYER 结合使用让我更加幸运。

于 2009-12-07T01:10:59.600 回答
0

我不知道 Flex,我使用 Flash CS3,但尝试添加一个事件侦听器来重新定位蒙版。另外,请尝试确保您以正确的顺序做事。应用面具,然后将所有东西放在第二个 VBox 中。换句话说,我对 Actionscript 的(有限)经验告诉我,年表很重要。

此外,请确保您的所有变量都被正确定位。在 Flash CS3 中(同样,我可能会胡言乱语),如果您单击其中包含子元素的 MovieClip,并且您没有专门为子元素关闭鼠标,则父级不会注册该事件。

祝你好运!

于 2009-12-07T01:16:46.970 回答