Несколько DrawPaths для мувиклипа XOR вместо аддитивного - PullRequest
1 голос
/ 12 декабря 2011

У меня есть маска для мувиклипа, и я хочу, чтобы плеер мог перемещать мышь, чтобы раскрыть мувиклип.Как сделать так, чтобы несколько путей в маске складывались, а не мешали друг другу?

var maskObj:MovieClip = new MovieClip();
pScalp.mask = maskObj;

//function on user input
//lastLeft,lastRight,tempLeft,tempRight refer to where the mouse is now and where it was before
    maskObj.graphics.beginFill(0x00000000);
    maskObj.graphics.drawPath(Vector.<int>([1,2,2,2,2]),
                          Vector.<Number>([lastLeft.x, lastLeft.y,
                                           lastRight.x, lastRight.y,
                                           tempRight.x, tempRight.y,
                                           tempLeft.x, tempLeft.y,
                                           lastLeft.x, lastLeft.y]),
                                           GraphicsPathWinding.NON_ZERO);
    pScalp.mask = maskObj;
    maskObj.graphics.endFill();
//end function

1 Ответ

0 голосов
/ 12 декабря 2011

Насколько я знаю, не существует оптового способа сделать все аддитивным, независимо от ориентации пути. Вместо этого, если вы можете гарантировать, что порядок точек на пути, который будет нарисован, всегда направлен по часовой стрелке (или всегда против часовой стрелки), то использование GraphicsPathWinding.NON_ZERO должно привести к аддитивному эффекту, который вы запрашиваете.

Уже есть обсуждение алгоритмов для достижения этой цели уже на SO, Сортировка четырех точек по часовой стрелке , которая должна помочь вам в этом.

Кроме того, вот ссылка на соответствующую документацию Adobe по Правилам намотки. .

...