数组问题引用:
var _mapData:Array = []; var row:Array = [0,0,0,0,0,0]; for (var j:int = 0; j < 6; j++) { _mapData.push(row); } _mapData[0][5] = 1; _mapData[1][5] = 2; trace(_mapData[0][5]); trace(_mapData[1][5]);
trace(_mapData[0][5]);和trace(_mapData[1][5]);的结果都是2,这明显不是预期的结果!
那到底是怎么回事呢,想来想去,忽然发现数组是引用类型的!!
所以最后_mapData是
[0,0,0,0,0,2]x6,
而不是预期的:
[0,0,0,0,0,1],
[0,0,0,0,0,2],
[0,0,0,0,0,0],
[0,0,0,0,0,0],
[0,0,0,0,0,0],
[0,0,0,0,0,0],
代码修改为:
var _mapData:Array = []; for (var j:int = 0; j < 6; j++) { var row:Array = [0,0,0,0,0,0]; _mapData.push(row); } _mapData[0][5] = 1; _mapData[1][5] = 2; trace(_mapData[0][5]); trace(_mapData[1][5]);
就可以达到预期的效果了。