请帮我优化这个方法

时间:2011-02-16 11:34:10

标签: flash actionscript-3

这是一个相当简单的操作 - 我在DisplayObjectContainer的常规点放置'句柄'。这些句柄将用于缩放,旋转插图画家等。

我知道这可以通过一些相当简单的数学来完成,但我花了所有的数学课程,画出了以越来越有创意的方式死去的棒人。

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 个答案:

答案 0 :(得分:3)

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 :(得分:1)

这样的事情怎么样?

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);
        }
    }
}

这样您也可以轻松调整手柄数量。