Flash 请帮我优化这个方法
这是一个相当简单的操作——我将“句柄”放置在DisplayObjectContainer的常规点上。这些手柄将用于缩放、旋转la Illustrator等 我知道这可以通过一些相当简单的数学来完成,但我把所有的数学课都花在画那些越来越有创造力的人的死亡上 TargetW/targetH是我要添加控制柄的对象的原始宽度/高度。显然,添加控制柄会增加宽度/高度,因此它们会预先存储Flash 请帮我优化这个方法,flash,actionscript-3,Flash,Actionscript 3,这是一个相当简单的操作——我将“句柄”放置在DisplayObjectContainer的常规点上。这些手柄将用于缩放、旋转la Illustrator等 我知道这可以通过一些相当简单的数学来完成,但我把所有的数学课都花在画那些越来越有创造力的人的死亡上 TargetW/targetH是我要添加控制柄的对象的原始宽度/高度。显然,添加控制柄会增加宽度/高度,因此它们会预先存储 protected function positionHandles():void { handles
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;iprotected 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,下]
。这样注册点可以在任何地方,而不会影响循环。很酷,这是一个非常有用的功能。谢谢!