Flash AS3 Как мне удалить дырку в маске? - PullRequest
0 голосов
/ 11 августа 2011

Я создал код Action Script 3, который извлекает изображение, делает ли это addchild и добавляет к нему маску.

Все отлично работает, кроме созданной мною анимированной мувиклипа.и этот MovieClip скрывает некоторые места, где 2 или более объектов внутри этого MovieClip перекрывают друг друга.Я не нашел, как удалить этот эффект, поэтому маска действительна при наложении, а также.

Поэтому в основном мне нужно знать, как отключить перекрывающий эффект исключения в 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;

Спасибо!

РЕДАКТИРОВАТЬ:

Вот проблема:

Example

Слайдер-MovieClip получил 7 слоев.1-й слой - буква М, а 7-й слой - большая коробка.По сути, сначала я хочу заполнить маску буквой, а затем полностью покрыть ее квадратом.Однако, когда эти 2 слоя наложены, вы можете получить серый результат (который является фоном).Я бы хотел, чтобы он показывал всю картинку без эффекта перекрытия.

Ответы [ 2 ]

1 голос
/ 11 августа 2011

это вызвано flash.display.GraphicsPathWinding

, если вы создаете графику с использованием класса GraphicsPath или функции drawPath(), просто присвойте соответствующее значениепараметр winding.если вы создаете графику в своей маске Sprite, используя методы удобства рисования (IE: drawRect), вы можете избежать проблем с наматыванием, оборачивая каждый рисунок с 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();

enter image description here

напишите:

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();

enter image description here

0 голосов
/ 23 мая 2012

Маскировка во Flash может быть загадкой.

Я решил эту проблему ранее, разбив все на один слой. Тогда не было слоев, которые могли бы перекрывать друг друга.

Эта статья и некоторые из комментариев содержат очень хорошие решения для странного поведения маски. Надеюсь, они вам тоже помогут!

Один солутон, который всегда стоит попробовать, это cacheAsBitmap = true

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...