Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Работа с mask'oй (http://www.flasher.ru/forum/showthread.php?t=208421)

GrafMine 11.07.2014 15:22

Работа с mask'oй
 
Здравствуйте, подскажите пожалуйста как:
- определить % отображаемой маски ?
- сделать края нанесения с альфой ?

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

        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 (BlendMode.ALPHA/BlendMode.ERASE/BlendMode.LAYER)

GrafMine 11.07.2014 16:22

Цитата:

Сообщение от Nooob (Сообщение 1168986)
1. вычислять

ну это было предвидено :)

Цитата:

Сообщение от Nooob (Сообщение 1168986)
2. используй 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 и находить площадь


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

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