PDA

Просмотр полной версии : Маска нестандартной формы


helio
12.11.2013, 17:56
Я пытаюсь сделать маску при помощи битмапы, т.е. имеет такую форму.

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

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

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


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
Попробуйте так:
_imageBox.cacheAsBitmap=true;
faceArea.cacheAsBitmap=true;

_imageBox.mask = faceArea;

helio
12.11.2013, 19:06
Попробуйте так:
_imageBox.cacheAsBitmap=true;
faceArea.cacheAsBitmap=true;

_imageBox.mask = faceArea;

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

samana
12.11.2013, 19:52
Смотрите в сторону копирования каналов. http://help.adobe.com/ru_RU/FlashPlatform/reference/actionscript/3/flash/display/BitmapData.html#copyChannel()
Суть в том, что в картинку можно скопировать любой канал (красный, синий, зелёный, альфа) из другой картинки.
Или просто сделать draw объекта (контейнера), в котором лежит картинка с применённой к ней маской.