Flash 请帮我优化这个方法

Flash 请帮我优化这个方法,flash,actionscript-3,Flash,Actionscript 3,这是一个相当简单的操作——我将“句柄”放置在DisplayObjectContainer的常规点上。这些手柄将用于缩放、旋转la Illustrator等 我知道这可以通过一些相当简单的数学来完成,但我把所有的数学课都花在画那些越来越有创造力的人的死亡上 TargetW/targetH是我要添加控制柄的对象的原始宽度/高度。显然,添加控制柄会增加宽度/高度,因此它们会预先存储 protected function positionHandles():void { handles

这是一个相当简单的操作——我将“句柄”放置在DisplayObjectContainer的常规点上。这些手柄将用于缩放、旋转la 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;
    }

像这样的怎么样

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);
        }
    }
}
var targetWidth:Number=100;
var TargetLight:数字=50;
var widthHandleDistance:数字=targetWidth/2;
var heightHandleDistance:数字=目标灯/2;
变量句柄:向量新向量();
函数positionHandles():void
{

对于(var i:int=0;i

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);
        }
    }
}
var targetWidth:Number=100;
var TargetLight:数字=50;
var widthHandleDistance:数字=targetWidth/2;
var heightHandleDistance:数字=目标灯/2;
变量句柄:向量。=新向量。();
函数positionHandles():void
{
对于(var i:int=0;i
protected function positionHandles():void{
对于(变量n:int=0;n<9;n++){
句柄[n]。x=[0,targetW/2,targetW][n%3];
句柄[n].y=[0,targetH/2,targetH][int(n/3)];
}
}
受保护的函数positionHandles():void{
对于(变量n:int=0;n<9;n++){
句柄[n]。x=[0,targetW/2,targetW][n%3];
句柄[n].y=[0,targetH/2,targetH][int(n/3)];
}
}

不幸的是,我有一个设置数量的句柄(9),所以这不起作用。我可以看到一个舍入错误,用这个方法切掉最右边/最下面的句柄。(假设targetWidth/targetTheLight可以是非整数)不幸的是,我有一个设置数量的句柄(9)这个方法不起作用。我可以看到一个舍入的错误用这个方法截断最右边/最下面的句柄。(假设目标宽度/ TaGeTeTHEE可以是非整数的)这是一个。当Reg点在中间,而不是左上角时,你知道如何修改它吗?<代码> [-TAGWW/2, 0,TAGWW/2 ] < /COD>和<代码>。[-targetH/2,0,targetH/2]
可以。我想。但是我会尝试计算循环外对象的矩形,然后使用它:
[left,(left+right)/2,right]
[top,(top+bottom)/2,bottom]这样,注册点可以在任何地方不影响循环。酷,这是一个非常有用的特性。谢谢!就是那个。任何想法如何修改它,当它在中间,而不是左上角时,它工作。<代码> [TAGWW / 2, 0,TAGWW/2 ] <代码> >代码> [Talgth/2, 0,TaGuth/2 ]。
可以。我想。但是我会尝试计算循环外对象的矩形,然后使用它:
[左,(左+右)/2,右]
[上,(上+下)/2,下]
。这样注册点可以在任何地方,而不会影响循环。很酷,这是一个非常有用的功能。谢谢!