2013-04-02 3 views
1

У меня есть следующая проблема: я рисую форму в группе, которая будет использоваться в качестве маски. Затем я поворачиваю изображение в x, y, z, используя Rotate3D, и использую группу как маску изображения, но результат не то, что я хочу, потому что, как только Группа станет маской изображения, она также получает свое вращение. То, что я хочу достичь, состоит в том, чтобы получить часть повернутого изображения в соответствии с формой, которую я нарисовал. Как применить маску, не поворачивая ее? Или это можно сделать любым другим способом?Маска автоматически поворачивается при приложении к повернутому объекту

Вот код:

grpMask = new Group(); 
    g = grpMask.graphics; 
    g.lineStyle(0, 0x00FF00); 
    g.moveTo(points[0].x, points[0].y); 
    g.beginFill(0x00FF00, .3); 
    for (var i:int; i < points.length - 1; i++) 
    { 
     g.lineTo(points[i + 1].x, points[i + 1].y); 
    } 
    g.endFill(); 
    grpCanvas.addElement(grpMask); 

Затем я imgTarget.mask = grpMask. Для imgTarget были применены несколько эффектов Rotate3D, которые, к сожалению, передаются маске.

+0

Как насчет делать что-то вроде этого: Поместите объект, который вращается в контейнере, а затем применить маску контейнер. –

+0

Это, _did_ выполнить эту работу. Спасибо, Сунил Д.! Пожалуйста, ответьте на этот вопрос нормально, чтобы я мог отметить его как ответ. – kvist

ответ

0

Одним из решений является добавление объекта, поворачиваемого в класс контейнера, например Sprite или Group. Затем нанесите маску на контейнер, вместо развернутого объекта:

var container:Group = new Group(); 
container.addElement(roatatedObject); 
container.mask = maskObject; 
container.addElement(maskObject); 

или

var container:Sprite = new Sprite(); 
container.addChild(rotatedObject); 
container.mask = maskObject; 
container.addChild(maskObject); 
Смежные вопросы