Flash AS3如何清除蒙版上的重叠孔?

时间:2011-08-11 14:29:21

标签: flash actionscript-3

我制作了一个动作脚本3代码来获取图像,addchild做了它并为它添加了一个掩码。

一切正常,除了我制作的蒙版是一个动画的MovieClip,这个MovieClip隐藏了一些位置,其中MovieClip中的2个或更多对象彼此重叠。 我还没有找到如何去除这种效果,所以遮罩在重叠时也是有效的。

基本上我需要知道如何在AS3中禁用重叠排除效果。是否有某种设置可以解决这个问题?

代码在这里:

// area is a MovieClip
// images_loaded[current_int] is a loaded image
// slider is a MovieClip, which I use to mask with
next_image          =   area.addChild(images_loaded[current_int]);
next_image.x        =   0;
next_image.y        =   0;
var masky:MovieClip =   new slider;
masky.x             =   0;
masky.y             =   0;
area.addChild(masky);
next_image.mask =   masky;

谢谢!

修改

问题在于:

Example

slide-MovieClip有7层。第一层是字母M,第七层是大盒子。基本上我首先要用字母填充Mask,然后用bix框覆盖它。但是当这两个叠加时,你可以得到灰色结果(这是背景)。 我想要显示整个图片,没有这种重叠效果。

2 个答案:

答案 0 :(得分:1)

这是由flash.display.GraphicsPathWinding

引起的

如果您使用GraphicsPath类或drawPath()函数生成图形,只需为winding参数指定适当的值即可。如果你使用绘图方便法(IE:drawRect)在你的面具Sprite中制作图形,你可以通过用beginFill()endFill()包装每个绘图来避免缠绕问题。

所以不要写这个:

s.graphics.beginFill(0xFF0000, 1.0);
s.graphics.drawRect(0, 0, 100, 100);
s.graphics.drawRect(20, 20, 100, 100);
s.graphics.drawRect(40, 40, 100, 100);
s.graphics.endFill();

enter image description here

写下这个:

s.graphics.beginFill(0xFF0000, 1.0);
s.graphics.drawRect(0, 0, 100, 100);
s.graphics.endFill();
s.graphics.beginFill(0xFF0000, 1.0);
s.graphics.drawRect(20, 20, 100, 100);
s.graphics.endFill();
s.graphics.beginFill(0xFF0000, 1.0);
s.graphics.drawRect(40, 40, 100, 100);
s.graphics.endFill();

enter image description here

答案 1 :(得分:0)

屏蔽肯定在Flash中可能是一个谜。

我之前通过将所有内容分解为一个层来解决此问题。然后没有可以相互重叠的层。

This articlethe comments中的一些包含非常好的解决方案,可用于奇怪的掩码行为。希望他们也会帮助你!

一个值得尝试的解决方案是cacheAsBitmap = true