2

我意识到这完全是一个新手问题,但它让我发疯......

在 Flash Professional 中,我有一个影片剪辑,例如 1000 像素高和 50 像素宽。我将它包含在(下方)一个遮罩层中,该遮罩层的高度为 100 像素,宽度为 50 像素。在我的程序中,我垂直移动了影片剪辑,并且正如预期的那样,它被蒙版,因此我只能垂直看到 100 像素。

我的问题是:如何从我的电影剪辑中删除蒙版?当我在 Flash Builder 中调试检查影片剪辑时,它的 .mask 属性为空。不过蒙面的...

我错过了什么?

提前致谢,

格雷格

4

5 回答 5

1

格雷格是对的。您会认为您可以通过 DisplayObject 的 mask 属性访问在 Flash IDE 中设置的掩码,但您不能。在 flash 中设置的掩码在 actionscript 中始终为空。

去除面具的hacky版本是你可以尝试

displayObjectWithMaskOnIt.parent.removeChild(displayObjectWithMaskOnIt) 

接着

displayObjectWithMaskOnIt.parent.addChild(displayObjectWithMaskOnIt). 
于 2012-07-19T07:38:21.053 回答
0

来自http://forum.starling-framework.org/topic/weird-how-to-read-mask-info-from-an-swf-file

很简单:遮罩属性是与时间线遮罩完全不同的遮罩。

mask 属性允许您将任何对象用作任何其他对象的掩码(只要记住将它们放在同一个显示树上,否则事情会变得毫无意义)。

时间线遮罩将给定的深度范围指定为被特定对象遮罩。

这两个系统根本不通信,但它们做同样的工作。

如果您想访问时间线掩码,最好带出您的 swf 解析器或 jsfl。

所以时间线掩码使用不同的机制,与掩码属性分开。这就是您无法访问它们的原因。正如其他人所提到的,您可以通过删除和添加子项来间接停用时间线蒙版,但是缺少解析 SWF 文件,我认为没有任何方法可以检测对象是否在第一个时间线蒙版中被蒙版地方。

于 2014-05-19T18:15:48.167 回答
0

通过动作脚本检查蒙版是否适用于您的 MovieClip 的父级:

MovieClip(movicClipInstanceName_mc.parent).mask

如果它被设置为... .mask = null;

通常,我在时间线中声明的任何掩码都不会在我的 AS 代码中弄乱,因为对我来说,我认为它是一个永久条件。如果您想稍后以编程方式更改它,我建议您在 AS 代码中设置 mask 属性。

movicClipInstanceName_mc.mask = someOtherMovieClipInstanceThatIsMyMask_mc;

对我来说,这样做感觉更干净,我觉得我对它有更多的控制权。

于 2012-04-10T05:05:57.027 回答
0

给大电影剪辑一个实例名称(比如 big_mc),然后

big_mc.mask = null; 
于 2012-04-10T14:34:51.603 回答
0

我知道这不是您要寻找的答案,但这会去掉面具。如果您创建一个单独的剪辑将遮罩推到它上面,则会从之前遮罩的对象中移除遮罩,

例如...

object1.mask = mask1;

然后将您的代码添加到新对象 object2.mask = mask1;

因为一个对象一次只能遮盖 1 个对象,它现在将遮盖新对象,有效地从旧对象中移除遮罩

于 2016-11-07T00:59:10.030 回答