Помогите мне оптимизировать этот метод, пожалуйста - PullRequest
1 голос
/ 16 февраля 2011

Это довольно простая операция - я размещаю «маркеры» в обычных точках DisplayObjectContainer.Эти маркеры будут использоваться для масштабирования, поворота в стиле Illustrator и т. Д.

Я знаю, что это можно сделать с помощью довольно простых математических упражнений, но я потратил все свои уроки по математике, рисуя людей-палочек, умирающих все более и более творчески.

TargetW / targetH - исходная ширина / высота объекта, к которому я добавляю маркеры.Очевидно, что добавление маркеров увеличивает ширину / высоту, поэтому они сохраняются заранее.

protected function positionHandles():void {

        handles[0].x = 0;
        handles[0].y = 0;

        handles[1].x = targetW / 2;
        handles[1].y = 0;

        handles[2].x = targetW;
        handles[2].y = 0;

        handles[3].x = 0;
        handles[3].y = targetH / 2;

        handles[4].x = targetW / 2;
        handles[4].y = targetH / 2;

        handles[5].x = targetW;
        handles[5].y = targetH / 2;

        handles[6].x = 0;
        handles[6].y = targetH;

        handles[7].x = targetW / 2;
        handles[7].y = targetH;

        handles[8].x = targetW;
        handles[8].y = targetH;
    }

Ответы [ 2 ]

3 голосов
/ 16 февраля 2011
protected function positionHandles():void {

    for(var n:int = 0; n < 9; n ++) {
       handles[n].x = [0, targetW / 2, targetW][n % 3];
       handles[n].y = [0, targetH / 2, targetH][int(n / 3)];
    }

}
1 голос
/ 16 февраля 2011

Как насчет этого?

var targetWidth:Number = 100;
var targetHeight:Number = 50;
var widthHandleDistance:Number = targetWidth/2;
var heightHandleDistance:Number = targetHeight/2;
var handles:Vector.<Point> = new Vector.<Point>();

function positionHandles():void
{
    for (var i:int = 0; i<=targetWidth; i=i+widthHandleDistance)
    {
        for (var k:int = 0; k<=targetHeight; k=k+heightHandleDistance)
        {
            var handle:Point = new Point(i,k);
            handles.push(handle);
        }
    }
}

Таким образом, вы также можете легко настроить количество ручек.

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