如果我理解正確這應該做的工作:
var object:Object = {width: 500, height:500, num:10};
var points:Array = getCoordinates(object);
function getCoordinates(object:Object):Array {
var array:Array = new Array();
var widthMultiplier:Number = object.width/(object.num + 1);
var heightMultiplier:Number = object.height/(object.num + 1);
for (a = 1; a <= object.num; a++) {
var coordinates:Point = new Point();
coordinates.x = widthMultiplier * a;
coordinates.y = heightMultipler * a;
array.push(coordinates);
}
return array;
}
這需要項目和總空間的數量,除以項目+ 1的號碼的總空間(以佔最後一個元素末尾的空格)每次增加對象。
編輯:在迴應評論這裏是一個版本,你可以說出你希望你的對象分佈在行數。如果行數不能分割對象的數量並返回一個整數,那麼函數將返回null。如果你不給它一個行參數,它假設你想要它在一行。請享用。
var object:Object = {width:500,height:500,num:10};
var points:Array = getCoordinates(object,2);
function getCoordinates(object:Object, rows:int = 1):Array
{
if ((object.num/rows) % 1)
{
return null;
}
else
{
var columns:int = object.num/rows;
var array:Array = new Array();
var widthMultiplier:Number = object.width/(columns + 1);
var heightMultiplier:Number = object.height/(rows + 1);
for (var a = 1; a <= rows; a++)
{
for (var b = 1; b <= columns; b++)
{
var coordinates:Point = new Point();
coordinates.x = widthMultiplier * b;
coordinates.y = heightMultiplier * a;
array.push(coordinates);
}
}
return array;
}
}
這是一半了!唯一的問題就是它只給出對角線值,我希望它們在給定的寬度/高度上均勻分佈,例如,左/右/上/下,不只是從左上到右下。 –
@JohnRake這是不可能沒有告訴它你想要每行或每列多少,看看有多個組合... 10它必須是5 x 2或2 x 5它只是方形數字有明顯的答案例如16將是4 x 4.你需要給它一個優先選擇是否你想要更多的對象在一行或一列然後我可以做到這一點。 –
我當然可以告訴它每個行/列有多少個額外的值 - 那太棒了! –