2016-11-22 3 views
4

Так что я создал 2D массив с этим кодом:мне нужно добавить значение в 2D массива я создал

var grid:Array = [ 
[1, 1, 1, 1], 
[1, 1, 1, 1], 
[1, 1, 1, 1], 
[1, 1, 1, 1] 
] 

И у меня есть кнопка, которая (теоретически) будет сращивань значения для каждой строки, поэтому расширение ширины сетки. Проблема, однако, не в моем коде, чтобы расширить ее шире, а скорее, когда я совмещаю вертикальное увеличение и горизонтальное.

Вот текущий код, который я пытаюсь использовать для увеличения высоты:

var insertTo:int = 1; 

var temp:Array = grid[0]; 

grid.splice(1, 0, temp); 

А вот текущий код, который я пытаюсь использовать для увеличения длительности:

for (var i:int = 0; i < grid.length; i++){ 

    var insertTo:int = 1; 

    grid[i].splice(insertTo, 0, 1); 

} 

И тока непреднамеренный результат после нажатия кнопки высоты, затем кнопку ширины (у меня есть следы на всем протяжении):

After height increase: 
1,1,1,1 
1,1,1,1 
1,1,1,1 
1,1,1,1 
1,1,1,1 

After width increase: 
1,1,1,1,1,1 
1,1,1,1,1,1 
1,1,1,1,1 
1,1,1,1,1 
1,1,1,1,1 

А вот предполагаемый результат после того, как делать то же самое в обратном порядке:

After width increase: 
1,1,1,1,1 
1,1,1,1,1 
1,1,1,1,1 
1,1,1,1,1 

After height increase: 
1,1,1,1,1 
1,1,1,1,1 
1,1,1,1,1 
1,1,1,1,1 
1,1,1,1,1 

Почему это работает так, а не иначе, и как это исправить?

+0

почему вы не используете 'push' вместо склеить? –

ответ

2

необходимо клонировать массив Befor вставив его в качестве нового значения

Класс массив не имеет встроенного метода для создания копий массивов. Вы можете создать мелкую копию массива, вызвав методы concat() или slice() без аргументов. В мелкой копии, если исходный массив имеет элементы, которые являются объектами, копируются только ссылки , а не сами объекты. Копия указывает на те же объекты, что и оригинал. Любые изменения, внесенные в , объекты отражаются в обоих массивах.

var insertTo:int = 1; 

var temp:Array = grid[0].concat(); // clone 

grid.splice(1, 0, temp); 
+0

Большое вам спасибо! Работает 100% сейчас. Большая помощь. – Eraeo

Смежные вопросы