【发布时间】:2010-07-12 15:43:04
【问题描述】:
我正在尝试使用拼接替换嵌套数组 (colArray) 中的一个对象,该对象充当我的播放器,需要在它所在的数组周围进行操作。 问题是 splice 似乎没有显示任何回报,它出现了一个错误说: 无法访问空对象引用的属性或方法。
我做错了什么?我将如何在数组周围移动我的 playerObject? 今晚我已经多次尝试解决这个问题,如果我的某些代码效率低下,请纠正我。提前致谢。
var gridContainerMC:MovieClip = new MovieClip();
var gridSize:Array = [col,row]; //Rows, Columns
var gridArray:Array = new Array();
var col:Number = 44;
var row:Number = 33;
var mapWidth:Number = 800; // set size correct
var mapHeight:Number = 600;
var sepCols:Number;
var sepRows:Number;
var menuHeight:int = 2;
// remove rows for menu
gridSize[1] = row-menuHeight;
var colArray:Array
buildGrid();
//posPlayer();
function buildGrid() {
sepCols = mapWidth / col;
sepRows = mapHeight / row;
// declare increment varibles
var i:int;
var n:int;
// creates nested Array
for (i = 0; i < gridSize[0]; i++) {
colArray = new Array();
for (n = 0; n < gridSize[1]; n++) {
var tileObject:MovieClip = createClip();
tileObject.x = i * (tileObject.width - 1);
tileObject.y = n * (tileObject.width - 1);
gridContainerMC.addChild(tileObject);
colArray.push(tileObject);
}
gridArray.push(colArray);
}
this.addChild(gridContainerMC);
var playerObject:MovieClip = createCharacter();
this.addChild(colArray.splice(1, 0, playerObject));
trace(playerObject);
} // endOf BuildGrid
function createClip ():MovieClip {
var returnClip:MovieClip = new MovieClip();
returnClip.graphics.lineStyle(1,0x8C8C8C);
returnClip.graphics.beginFill(0xc2c2c2, 1);
returnClip.graphics.drawRect(0, 0, sepCols, sepRows);
returnClip.graphics.endFill();
return returnClip;
} // endOf createClip
function createCharacter():MovieClip {
var playerClip:MovieClip = new MovieClip();
playerClip.graphics.lineStyle(1, 0x999999);
playerClip.graphics.beginFill(0x000000); //990033
playerClip.graphics.drawRect(0, 0, sepCols, sepRows);
playerClip.graphics.endFill();
return playerClip;
}
【问题讨论】:
标签: flash actionscript-3 arrays