Как использовать маску в actionscript 3.0? - PullRequest
0 голосов
/ 06 июня 2019

Я хочу замаскировать png image pattern.png другим изображением - mask.png, но оно не работает вообще, и я не могу найти причину. Вместо того, чтобы маскировать изображение, маска просто исчезает, а рисунок остается таким же, как был.

Я попытался сделать мувиклип, нарисовав, например, круг и использовать его в качестве маски вместо mask.png, и он работает просто отлично. Это потому, что вы не можете использовать объекты загрузчика как маски? Как мне заставить это работать?

edit: После изменения размера 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 Ответ

0 голосов
/ 06 июня 2019

Ваш код выглядит правильно. Свойство mask для DisplayObject тоже хочет DisplayObject. Но попробуйте сделать несколько вещей, чтобы найти проблему:

  1. У вас есть только один слушатель, pattern.png. Но вы должны быть уверены, что mask.png уже загружен.
  2. Несмотря на то, что Loader также является DisplayObject - попробуйте получить содержимое из загрузчика для маски, и сразу после этого попробуйте использовать его.

* Ах, и еще одна вещь. Вы должны сначала добавить слушателя, и только позже попытаться загрузить.

...