Topic: Game Programming /
Multidimensional array having some single elements not being copied properly
I ran into a speed bump and this has got me into a nice fix… here is an array from constants class
static public var CONNECT_NODES:Array = new Array(
//level 1
new Array(
new Array(7, 11),
new Array(7),
new Array(8),
new Array(8),
new Array(9),
new Array(10),
new Array(1, 2, 8, 11, 12, 13, 16),
new Array(3, 4, 7, 13),
new Array(5, 13, 14, 21),
new Array(6),
new Array(1, 7, 16, 23),
new Array(7, 13, 16, 17),
new Array(7, 8, 9, 12, 14, 18),
new Array(9, 13, 19, 20, 22),
new Array(16),
new Array(7, 11, 12, 15),
new Array(12),
new Array(13),
new Array(14),
new Array(14),
new Array(9),
new Array(14),
new Array(11)
),
//level 2
new Array(
new Array(7, 11),
new Array(7),
new Array(8),
new Array(8),
new Array(9),
new Array(10),
new Array(1, 2, 8, 11, 12, 13, 16),
new Array(3, 4, 7, 13),
new Array(5, 13, 14, 21),
new Array(6),
new Array(1, 7, 16, 23),
new Array(7, 13, 16, 17),
new Array(7, 8, 9, 12, 14, 18),
new Array(9, 13, 19, 20, 22),
new Array(16),
new Array(7, 11, 12, 15),
new Array(12),
new Array(13),
new Array(14),
new Array(14),
new Array(9),
new Array(14),
new Array(11),
new Array(14),
new Array(14),
new Array(9),
new Array(14),
new Array(11)
)
);
upon tracing length of elements in single level it traces out fine.
in my game loop I have got this code for copying the level data into another temp array in which changes will be made
trace("total nodes from array " + Constants.CONNECT_NODES[level - 1].length); //traces perfectly
for (var i:int = 0; i < Constants.CONNECT_NODES[level - 1].length; i++)
{
currentLevelNodeArray.push(new Array());
trace("element i " + i + " total elements " + Constants.CONNECT_NODES[level - 1][i].length);
//traces fine for inner array having more than one element
//but for arrays having single element it traces the
//value of that element instead
for (var j:int = 0; j < Constants.CONNECT_NODES[level - 1][i].length; j++)
{
currentLevelNodeArray[i].push(Constants.CONNECT_NODES[level - 1][i][j]);
}
trace("current i " + i + " total items " + j);
//traces fine for inner array having more than one element
//but for arrays having single element it traces
//the value of that element instead
possibleStartNode.push(i + 1);
}
here is sample of the traces
total nodes from array 23 //total elements
element i 0 total elements 2 //elements in first array of level one array
current i 0 total items 2
element i 1 total elements 7 //notice how the single element array value is coming
//instead of length being 1
current i 1 total items 7
element i 2 total elements 8
current i 2 total items 8
element i 3 total elements 8
current i 3 total items 8
element i 4 total elements 9
current i 4 total items 9
element i 5 total elements 10
current i 5 total items 10
element i 6 total elements 7
current i 6 total items 7
element i 7 total elements 4
current i 7 total items 4
element i 8 total elements 4
current i 8 total items 4
element i 9 total elements 6
current i 9 total items 6
element i 10 total elements 4
current i 10 total items 4
element i 11 total elements 4
current i 11 total items 4
element i 12 total elements 6
current i 12 total items 6
element i 13 total elements 5
current i 13 total items 5
element i 14 total elements 16
current i 14 total items 16
element i 15 total elements 4
current i 15 total items 4
element i 16 total elements 12
current i 16 total items 12
element i 17 total elements 13
current i 17 total items 13
element i 18 total elements 14
current i 18 total items 14
element i 19 total elements 14
current i 19 total items 14
element i 20 total elements 9
current i 20 total items 9
element i 21 total elements 14
current i 21 total items 14
element i 22 total elements 11
current i 22 total items 11
I am currently stumped as to why this is happening. Any ideas?