我在 Flash (AS3) 中创建了一个动态阻塞地形,一切正常,地形放置正确。但是我需要包含碰撞,并且我希望这些块位于影片剪辑(精灵)中,因此我可以测试与地形本身的碰撞。
Ps:我不知道单独测试与每个块的碰撞是否会好,因为我将使用 enterframe 函数并且块生成是动态的。
我面临的问题是我有一个名为 blockHolder 的精灵,但我无法将块添加到它。
这是代码(我对其进行了简化,因此如果您将它们直接添加到舞台中,我们将在级联中创建块,例如addChild(clonedSquare)。
我收到的错误: TypeError:错误 #1009:无法访问空对象引用的属性或方法。
var blockHolder:Sprite = new Sprite();
var clonedSquare = new square();
var lowestPoint:int = 10;
var highestPoint:int = 20;
var areaLenght:int = 10;
function createLvl():void
{
for (var i:Number = 0; i<(areaLenght); i++)
{
clonedSquare = new square();
clonedSquare.x = i * clonedSquare.width;
//sets the height of the first block
if (i == 0)
{
var firstY:Number = Math.ceil(Math.random()*((lowestPoint-highestPoint))+highestPoint)*clonedSquare.height;
clonedSquare.y = firstY;
trace("terrain begins " + firstY + " px down");
}
else
{
var previousId:Number = i - 1;
clonedSquare.y = getChildByName("newSquare"+previousId).y + clonedSquare.height;
}
//sets the entity (block) name based on the iteration
clonedSquare.name = "newSquare" + i;
//adds the cloned square
blockHolder.addChild(clonedSquare);
}
addChild(blockHolder);
}
createLvl();