如何在 actionscript 3.0 中使用掩码?

Posted

技术标签:

【中文标题】如何在 actionscript 3.0 中使用掩码?【英文标题】:How to use a mask in actionscript 3.0? 【发布时间】:2019-10-21 20:48:42 【问题描述】:

我想用另一个图像- mask.png 来掩盖 png 图像 pattern.png,但它根本不起作用,我找不到原因。不是遮盖图像,而是遮罩消失,图案保持原样。

我尝试制作一个电影剪辑,例如绘制一个圆圈并将其用作掩码而不是 mask.png,它工作得很好。是因为你不能使用加载器对象作为掩码吗?如何让它发挥作用?

编辑:在将 mask.png 的大小更改为小于图案后,我意识到它确实可以起到一定的作用,但是发生的事情不是将图案切割成我在png 文件,它只是将其切割成整个文件的形状,例如,它也计算矩形透明背景。我怎样才能让它只剪出形状?

var mask:Loader = new Loader();
mask.load(new URLRequest("mask.png"));
var pattern:Loader = new Loader();
pattern.load(new URLRequest("pattern.png"));

pattern.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);

function loadComplete(e:Event):void 
addChild(pattern);
addChild(mask);
pattern.mask = mask;

【问题讨论】:

【参考方案1】:

您的代码看起来正确。 DisplayObject 的 mask 属性也需要 DisplayObject。但尽量少做点事,找麻烦:

    pattern.png 只有一个监听器。但是你必须确定,那个 mask.png 也已经加载了。 尽管 Loader 也是 DisplayObject - 尝试从 loader 获取内容以获取掩码,然后尝试使用它。

*啊,还有一件事。您必须首先添加侦听器,然后才尝试加载。

【讨论】:

我尝试了所有这些,它保持不变。但是在将 mask.png 的大小更改为小于图案之后,我意识到它实际上确实做了一些工作,但是发生的事情不是将图案切割成我在 png 文件中绘制的形状,它只是将其切割成整个文件的形状,例如,它也计算矩形透明背景。你知道如何解决这个问题吗? @happykidney 如果我没记错的话,掩码和掩码对象都必须将 .cacheAsBitmap 属性设置为 true,然后还采用 alpha-channel考虑到,不仅是形状(图像对象显然是矩形):help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/…

以上是关于如何在 actionscript 3.0 中使用掩码?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flash 中使用 Actionscript 3.0 制作动态视频播放器

如何在 Actionscript 3.0 中获取数组的所有排列?

在 ActionScript (3.0) 中干净地合并两个数组?

如何在Actionscript 3.0中获取数组的所有排列?

如何在 ActionScript 3.0 中写入文本文件?

如何解决 用于 actionscript 3.0 编译的 java 虚拟机内存不足