フラッシュ (AS3) で動的にブロックされた地形を作成していますが、すべてうまくいき、地形は正しく配置されています。しかし、衝突を含める必要があり、ブロックをムービークリップ (スプライト) 内に配置して、地形自体との衝突をテストできるようにします。
Ps: enterframe 関数を使用し、ブロック生成は動的であるため、各ブロックとの衝突を個別にテストするのが良いかどうかはわかりません。
私が直面している問題は、blockHolder というスプライトがあることですが、それにブロックを addChild できません。
コードは次のとおりです (単純化したので、 addChild(clonedSquare)のようにブロックをステージに直接 addChild すると、カスケードでブロックが作成されます。
私が受け取っているエラー: TypeError: エラー #1009: null オブジェクト参照のプロパティまたはメソッドにアクセスできません。
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();