Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何以编程方式删除Flash Professional中定义的掩码?_Flash_Actionscript_Flash Cs5_Mask - Fatal编程技术网

如何以编程方式删除Flash Professional中定义的掩码?

如何以编程方式删除Flash Professional中定义的掩码?,flash,actionscript,flash-cs5,mask,Flash,Actionscript,Flash Cs5,Mask,我意识到这是一个全新的问题,但它让我发疯 在Flash Professional中,我有一个电影剪辑,高1000像素,宽50像素。我把它放在一个掩模层里,掩模高100px,宽50px。在我的程序中,我垂直移动电影剪辑,正如预期的那样,它被屏蔽,这样我只能垂直地看到100px 我的问题是:如何从我的电影剪辑中移除面具?在Flash Builder中调试检查电影剪辑时,其.mask属性为null。但它是伪装的 我错过了什么 提前感谢, Greg通过actionscript检查掩码是否为MovieCl

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

在Flash Professional中,我有一个电影剪辑,高1000像素,宽50像素。我把它放在一个掩模层里,掩模高100px,宽50px。在我的程序中,我垂直移动电影剪辑,正如预期的那样,它被屏蔽,这样我只能垂直地看到100px

我的问题是:如何从我的电影剪辑中移除面具?在Flash Builder中调试检查电影剪辑时,其.mask属性为null。但它是伪装的

我错过了什么

提前感谢,


Greg

通过actionscript检查掩码是否为MovieClip的父项:

MovieClip(movicClipInstanceName_mc.parent).mask
如果是,则将其设置为
。掩码=空

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

movicClipInstanceName_mc.mask = someOtherMovieClipInstanceThatIsMyMask_mc;

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

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

big_mc.mask = null; 

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

去除面具的黑客版本是,你可以尝试

displayObjectWithMaskOnIt.parent.removeChild(displayObjectWithMaskOnIt) 
然后

displayObjectWithMaskOnIt.parent.addChild(displayObjectWithMaskOnIt). 

很简单:mask属性是一个完全不同的mask 而不是时间面具

“遮罩”属性允许您将任何对象用作任何其他对象的遮罩 对象(请记住将它们放在同一个显示树或其他对象上 将变得荒谬)

时间轴遮罩将给定深度范围指定为被遮罩 通过特定的对象

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

如果您想访问 时间线掩码


因此,时间轴遮罩使用不同的机制,与遮罩属性分离。这就是你无法访问它们的原因。正如其他人所提到的,您可能可以通过删除和添加子项来间接停用时间线掩码,但除了解析SWF文件之外,我认为没有任何方法可以首先检测对象是否被时间线掩码屏蔽。

我知道这不是您要寻找的答案,但这将删除掩码。 如果创建一个单独的剪辑以将遮罩推到其上,将从之前遮罩的对象中移除遮罩,

例如

object1.mask=mask1;

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


因为一个对象一次只能屏蔽一个对象,所以它现在将屏蔽新对象,从而有效地从旧对象中删除屏蔽

感谢您的回复,不幸的是,父对象的屏蔽也是空的。在本例中,父级是主要的电影剪辑/舞台。我的蒙版电影剪辑有一个实例名,我甚至尝试将蒙版本身制作成电影剪辑。没有运气。。。蒙版层似乎根本不符合.mask属性(据我所知),谢谢。。电影剪辑已具有实例名称。它的掩码为空。有关更多信息,请参阅我对ToddBFisher的回复。更好的解决方案是从显示列表中删除掩码本身。问题是掩码不在显示列表中。例如,我有一个用位图(一张精灵图标)定义的符号,然后它被一个只有矩形的图层屏蔽。在运行时,实例具有空掩码,并且它包含的唯一子对象是两个形状对象。。。所以我甚至不知道它是如何显示位图的,除非它在编译时将位图光栅化为某种静态形状对象。显然有一些令人讨厌的神秘优化正在发生。仍然没有找到答案,不幸的是,我甚至不能在Adobe论坛上发表文章,因为截至昨天(2014年5月15日),Adobe云服务在全球范围内已经停止。无法登录论坛或应用程序。史诗般的失败。一旦我弄清楚authortime面具是怎么回事,我会在这里发布答案。