Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Как использовать маску дважды? (http://www.flasher.ru/forum/showthread.php?t=93606)

Rzer 25.03.2007 12:42

Как использовать маску дважды?
 
Есть такая проблема. Необходимо найти пересечение двух областей (общее двух шейпов) и использовать это как маску. Если маскировать дважды (маскировать shape в мувике, который сам будет маской на сцене) - работает некорректно.
Подскажите может кто сталкивался с такой проблемой.

bbexp 25.03.2007 14:52

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

Если такая история не подходит - то вычислять программно пересечение масок и рисовать маску через drawingAPI. но это грандиозный ход в большинстве случаев. Придется писать массу формул для определения пересечения кривых, прямых и т.д. Огромная работа в этом направлении проделана Иваном Дембицким, поизучайте его класc bezier. http://bezier.ru

Rzer 25.03.2007 15:01

Большое спасибо. Первый подход работает как надо.

iNils 25.03.2007 15:11

Для потомков
Код:

function drawRect (mc:MovieClip, color:Number, x:Number, y:Number, w:Number, h:Number):Void {
        mc.beginFill (color, 50);
        mc.moveTo (x, y);
        mc.lineTo (w, y);
        mc.lineTo (w, h);
        mc.lineTo (x, h);
        mc.lineTo (x, y);
        mc.endFill ();
}
var mcA:MovieClip = this.createEmptyMovieClip ("mcA", 1);
var mcMaska1:MovieClip = mcA.createEmptyMovieClip ("mcMaska1", 1);
drawRect (mcMaska1, 0, -100, -100, 100, 100);
var mcClip:MovieClip = mcA.createEmptyMovieClip ("mcClip", 0);
drawRect (mcClip, 0xFF0000, -150, -150, 150, 150);
////
var mcMaska2:MovieClip = this.createEmptyMovieClip ("mcMaska2", 0);
drawRect (mcMaska2, 0, -100, -100, 100, 100);
////
mcA._x = 200;
mcA._y = 200;
mcMaska2._x = 200;
mcMaska2._y = 200;
mcClip.setMask (mcMaska1);
////
this.onEnterFrame = function () {
        mcMaska1._rotation++;
        mcMaska2._rotation--;
        mcA.setMask (mcMaska2);
};



Часовой пояс GMT +4, время: 11:05.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.