Я смотрел на маски градиента, чтобы добавить эффект растушевки / размытия к краям некоторых фигур, которые я рисую в AS3 (только с кодом), но он мне нужен для работы с квадратами / прямоугольниками, а также с кругами.
Существует ли какая-либо матрица, которая допускает этот тип преобразования?Я действительно мог бы использовать некоторые рекомендации.
Цель - уменьшить размер файла, что означает, что я не хочу добавлять PNG для использования в качестве масок.
Заранее спасибо.
[РЕДАКТИРОВАТЬ]
Я поместил код, который я использую для рисования фигуры, и я пытаюсь нанести закрашенный край на каждую фигуру (за исключениемслучаи 3 и 4, с которыми я пытаюсь нарисовать фигуры для другого типа продукта) Переменная imageCont является контейнером для изображения, которое я пытаюсь замаскировать.Но мне кажется, что я не могу поставить заостренный край ни на круги / овалы, ни на прямоугольник.
public function drawMask (drawI:int, clipWidth:int, clipHeight:int) {
var maskingShape:Shape = new Shape();
this.addChild(maskingShape);
maskingShape.x = 0;
maskingShape.y = 0;
var matr:Matrix = new Matrix();
var colors:Array = [0xFFFFFF, 0xFFFFFF];
var alphas:Array = [1, 0];
var ratios:Array = [200,255];
matr.createGradientBox( clipWidth, clipHeight );
//Calculate the positions automatically so they're centered
var centerX = 250 - (clipWidth / 2);
var centerY = 250 - (clipHeight / 2);
maskingShape.graphics.lineStyle();
//Only draw what we wanted..
switch ( drawI ) {
case 1:
showBalloonApp();
maskingShape.graphics.beginGradientFill ( GradientType.RADIAL, colors, alphas, ratios, matr );
maskingShape.graphics.drawEllipse ( centerX, centerY, clipWidth, clipHeight );
break;
case 2:
showBalloonApp();
maskingShape.graphics.beginGradientFill ( GradientType.RADIAL, colors, alphas, ratios, matr );
maskingShape.graphics.drawRoundRect ( centerX, centerY, clipWidth, clipHeight, 100, 100 );
break;
case 3:
hideBalloonApp();
//verticle shadow
maskingShape.graphics.beginFill ( 0x3B3B3B, 0.65 );
maskingShape.graphics.drawRect ( ( centerX + clipWidth - 30 ), centerY, 30, clipHeight );
maskingShape.graphics.endFill();
//horizontal shadow
maskingShape.graphics.beginFill ( 0x3B3B3B, 0.65 );
maskingShape.graphics.drawRect ( centerX, ( centerY + clipHeight - 30 ), clipWidth, 30 );
maskingShape.graphics.endFill();
//rectangle
maskingShape.graphics.drawRect ( centerX, centerY, clipWidth, clipHeight );
break;
case 4:
hideBalloonApp();
//verticle shadow
maskingShape.graphics.beginFill ( 0x3B3B3B, .65 );
maskingShape.graphics.drawRect ( ( centerX + clipWidth - 20 ), centerY, 20, clipHeight );
maskingShape.graphics.endFill();
//horizontal shadow
maskingShape.graphics.beginFill ( 0x3B3B3B, .65 );
maskingShape.graphics.drawRect ( centerX, ( centerY + clipHeight - 20 ), clipWidth, 20 );
maskingShape.graphics.endFill();
//rectangle
maskingShape.graphics.drawRect ( centerX, centerY, clipWidth, clipHeight );
break;
default:
showBalloonApp( );
maskingShape.graphics.beginGradientFill ( GradientType.RADIAL, colors, alphas, ratios, matr );
maskingShape.graphics.drawEllipse ( centerX, centerY, clipWidth, clipHeight );
break;
}
//End the filling process
maskingShape.graphics.endFill ( );
//Cache them as Bitmap items
imageCont.cacheAsBitmap = true;
maskingShape.cacheAsBitmap = true;
//Apply the mask
imageCont.mask = maskingShape;
}