AIR中的掩码与Actionscript 3

时间:2009-12-07 01:00:19

标签: actionscript-3 air mask

我正在尝试在ActionScript 3中对圆形进行遮罩(我正在使用Flex AIR框架)。它与生态足迹有关,每个圆圈代表一个地球。 这张生态足迹图片位于一个容器内。问题是掩模似乎是固定的,尽管图片浮动。当我向下滚动容器时,图片将滚动得很好,但是面具不会,剪掉图片的顶部。 我把这个和其他UIMovieClip放在VBox容器中。那个VBox容器在另一个VBox容器里面。如果我将vomer 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();

3 个答案:

答案 0 :(得分: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。这是第一个更好的解决方案,因为如果不将它们捆绑在一起,如果移除地球,则不太可能记得移除遮罩。

希望这有帮助。

答案 1 :(得分:0)

面具很糟糕,经常不做他们所期望的事情。 BlendMode.ALPHA与BlendMode.LAYER一起使用时,我有更多的运气。

答案 2 :(得分:0)

我不知道Flex,我使用Flash CS3,但尝试添加一个事件监听器来重新定位掩码。 另外,请确保以正确的顺序执行操作。应用面膜,然后将所有内容放入第二个VBox中。 换句话说,我对Actionscript的(有限)经验告诉我时间顺序很重要。

另外,请确保正确定位所有变量。在Flash CS3中(再次,我可能会喷出乱码)如果你点击一个内部有子元素的MovieClip并且没有专门为子元素关闭鼠标,那么父母将不会注册该事件。 / p> 祝你好运!