Как сгенерировать эту последовательность программно - PullRequest
0 голосов
/ 30 ноября 2009

Как я могу динамически генерировать этот массив.

var posX:Array = [0,-20,20,-40,0,40,-60,-20,20,60,-80,-40,0,40,80,-100,-60,-20,20,60,100]

Числа в массиве относятся к позиции х объекта. Я использую его для размещения объектов в треугольной формации.

     0
   -20 20
  -40 0 40
-60 -20 20 60 etc

Заранее спасибо

Ответы [ 4 ]

1 голос
/ 30 ноября 2009
var d:Number = 20;
var a:Array = [];
for(var i:Number = 0; i < 6; i++)
{
    for(var j:Number = 0; j <= i; j++)
    {
        a.push(d * (2 * j - i));
    }
}
trace(a.join());    

Первое число каждой строки является отрицательным от времени индексации строки с нуля d: - i * d
Каждое последующее число подряд превышает предыдущее число на 2*d. Следовательно, последующие числа = первый элемент + 2 * d * индекс на основе нуля в строке

Что есть = - i * d + 2 * d * j = d * (2 * j - i)

0 голосов
/ 30 ноября 2009

Я не знаю Actionscript, но псевдокод выглядит так:

for (row=0; ; row++)
{
   maxVal=20*row;
   for (val=-maxVal;val<=maxVal;val+=40)
    posX.append(val);
}
0 голосов
/ 30 ноября 2009

Код для каждой строки в f #:

let StepN n = 
    let n = -(n*20)
    [
    for x in [n..40..-n] do
        yield x
    ]   
0 голосов
/ 30 ноября 2009

Этот код выводит последующие элементы вашего массива для десяти строк вашей треугольной формации:

var x:int;
var y:int;
for (y = 0; y < 10; y++) {
    for (x = 0; x < y + 1; x++) {
        trace(20 * ( -y + 2 * x));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...