ActionScript 3 перо вектор - PullRequest
       0

ActionScript 3 перо вектор

1 голос
/ 25 сентября 2011

Я смотрел на маски градиента, чтобы добавить эффект растушевки / размытия к краям некоторых фигур, которые я рисую в 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;
    }

1 Ответ

1 голос
/ 25 сентября 2011

Поскольку вы не предоставляете какой-либо код или информацию о том, что вы пробовали, немного сложно узнать, как отвечать, поэтому я начну с некоторых основ - что и маска, и маскированный DisplayObject имеют быть битмапами для работы градиентных масок, в строке этого схематического кода:

gradientMask.cacheAsBitmap = true;
drawing.cacheAsBitmap = true;
drawing.mask = gradientMask;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...