我制作了一个动作脚本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;
谢谢!
修改
问题在于:
slide-MovieClip有7层。第一层是字母M,第七层是大盒子。基本上我首先要用字母填充Mask,然后用bix框覆盖它。但是当这两个叠加时,你可以得到灰色结果(这是背景)。 我想要显示整个图片,没有这种重叠效果。
答案 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();
写下这个:
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();
答案 1 :(得分:0)
屏蔽肯定在Flash中可能是一个谜。
我之前通过将所有内容分解为一个层来解决此问题。然后没有可以相互重叠的层。
This article和the comments中的一些包含非常好的解决方案,可用于奇怪的掩码行为。希望他们也会帮助你!
一个值得尝试的解决方案是cacheAsBitmap = true