Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Маска нестандартной формы (http://www.flasher.ru/forum/showthread.php?t=204841)

helio 12.11.2013 17:56

Маска нестандартной формы
 
Я пытаюсь сделать маску при помощи битмапы, т.е. имеет такую форму.

http://i.cubeupload.com/mWnfur.png

Все что не белого цвета прозрачно. Так применяя такую маску она обрезает прямоугольник вместо такой формы. Можно ли как это реализовать? Примитивами вряд ли получится сделать такую маску.

Вот исходный код

Код AS3:

package
{
        import flash.display.Bitmap;
        import flash.display.Sprite;
 
        [SWF(width="960", height="640", frameRate="60", backgroundColor="0x4a4137")]
        public class Main extends Sprite
        {
                [Embed(source="jack.jpg")]
                private var PhotoImg:Class;
 
                [Embed(source="faceArea.png")]
                private var FaceAreaImg:Class;
 
                private var _imageBox:Sprite;
 
                public function Main()
                {
                        createMask();
                }
 
                private function createMask():void
                {
                        var img:Bitmap = new PhotoImg();
                        _imageBox = new Sprite();
                        _imageBox.x = 0;
                        _imageBox.y = 0;
                        _imageBox.addChild(img);
                        addChild(_imageBox);
 
                        var faceArea:Bitmap = new FaceAreaImg();
                        faceArea.x = 50;
                        faceArea.y = 50;
                        addChild(faceArea);
 
                        _imageBox.mask = faceArea;
                }
        }
}


samana 12.11.2013 19:02

Попробуйте так:
Код AS3:

_imageBox.cacheAsBitmap=true;
faceArea.cacheAsBitmap=true;
 
_imageBox.mask = faceArea;


helio 12.11.2013 19:06

Цитата:

Сообщение от samana (Сообщение 1152127)
Попробуйте так:
Код AS3:

_imageBox.cacheAsBitmap=true;
faceArea.cacheAsBitmap=true;
 
_imageBox.mask = faceArea;


большое спасибо. То что нужно. А можно ли в будущем вырезать картинку по этой форме?

samana 12.11.2013 19:52

Смотрите в сторону копирования каналов. http://help.adobe.com/ru_RU/FlashPla...#copyChannel()
Суть в том, что в картинку можно скопировать любой канал (красный, синий, зелёный, альфа) из другой картинки.
Или просто сделать draw объекта (контейнера), в котором лежит картинка с применённой к ней маской.


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

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