2009-12-07 37 views
0

我想在ActionScript 3(我使用Flex AIR框架)上的圆形形状做掩码。它与生态足迹有关,每个圈代表一个地球。 这个生态足迹照片是在一个容器内。问题是,虽然图片漂浮,但面具似乎是固定的。当我向下滚动容器时,图片将滚动得很好,但是蒙版不会剪掉图片的顶部。 我已将此和其他UIMovieClip放入VBox容器中。该VBox容器在另一个VBox容器内。如果我将VBox容器放在后者的底部,那么面罩将不会与它一起走动,因此圆形不会被遮盖。面具在AIR与ActionScript 3

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(); 

回答

0

面具吸吮,并经常不做他们所期望的。 BlendMode.ALPHA与BlendMode.LAYER一起使用,我已经有了更多的运气。

+0

也许不是正确的答案,但我用BlendMode.ERASE和BlendMode.LAYER做到了,并且更简单。 – webdreamer

0

我不知道Flex,我使用Flash CS3,但尝试添加一个Event Listener来重新定位掩码。 此外,请确保您按照正确的顺序进行操作。应用面具,然后把所有东西放在第二个VBox中。 换句话说,我对Actionscript的(有限的)经验告诉我,年表很重要。

另外,请确保所有变量的定位正确。在Flash CS3中(同样,我可能会喷出乱码),如果您单击带有子元素的MovieClip并且没有为子元素专门关闭鼠标,则父级将不会注册该事件。

祝你好运!

1

要么掩模添加到垂直框容器:

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。这是第一个更好的解决方案,因为如果你不把它们捆绑在一起,如果你移除了地球,你不太可能记得去掉面具。

希望这会有所帮助。

+0

谢谢!这很有道理。我会尝试一下:-P – webdreamer