PDA

Просмотр полной версии : Работа с mask'oй


GrafMine
11.07.2014, 15:22
Здравствуйте, подскажите пожалуйста как:
- определить % отображаемой маски ?
- сделать края нанесения с альфой ?

у меня есть такой пример :

var currentItemForFace:MovieClip = new MovieClip();
var unclean:MovieClip;
unclean = Face_ugle as MovieClip;
unclean.x = 180;
unclean.y = 100;
GreatSprite.addChild(unclean);
GreatSprite.addEventListener(MouseEvent.MOUSE_MOVE, makeCleanStep1);
var clean:MovieClip;
clean = Face_smile as MovieClip;
clean.x = 180;
clean.y = 100;
GreatSprite.addChild(clean);
addChild (currentItemForFace);
clean.mask = currentItemForFace;
currentItemForFace.graphics.moveTo (mouseX, mouseY);

private function makeCleanStep1 (e:MouseEvent):void {
currentItemForFace.graphics.beginFill(0xff00ff);
currentItemForFace.graphics.drawCircle(mouseX, mouseY, 20);
currentItemForFace.graphics.endFill();
}


Например я не везде поводил по картинке, и хочу знать сколько % я закрасил, как это реализовать ?
как видно с кода рисуется четким кругом а хотелось бы что бы края были прозрачные чтоб убрать эту сильную резкость .

Nooob
11.07.2014, 15:47
1. вычислять
2. используй blendMode (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html#blendMode) (BlendMode.ALPHA/BlendMode.ERASE/BlendMode.LAYER)

GrafMine
11.07.2014, 16:22
1. вычислять
ну это было предвидено :)


2. используй blendMode (http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject.html#blendMode) (BlendMode.ALPHA/BlendMode.ERASE/BlendMode.LAYER)
Не один из них не дал желаемого ефекта , только LAYER я так и не понял что он дает на практике изменений не увидел

Nooob
11.07.2014, 17:52
Всё там можно сделать, просто нужно правильно готовить маску.
Зачем LAYER:
BlendMode.ERASE - Стирает фон на основе альфа-значения экранного объекта. Для этого требуется, чтобы настройке blendMode родительского экранного объекта было задано значение BlendMode.LAYER.

nubideus
11.07.2014, 19:03
- определить % отображаемой маски ?это сложная математическая фигня.
тебе придется считать закрашенные пиксели, это самый простой вариант. http://habrahabr.ru/post/192272/

можешь работать с полигонами, там надо только OR и находить площадь