如何检测as3闪存中的碰撞和堆积物体?
问题描述:
当我试图让sqares堆栈时,我遇到了一点问题,几乎像在俄罗斯方块中。 我不知道如何控制不同的方块,以便检查碰撞。我已经用as3链接名称Square做了一个正方形。如何检测as3闪存中的碰撞和堆积物体?
var timer:Timer = new Timer(12);
timer.addEventListener(TimerEvent.TIMER, doStuff);
timer.start();
var newSquare= new Square();
nyFirkant.y = 0;
nyFirkant.x = Math.floor(Math.random() * 4) * 100;
addChild(newSquare);
stage.addEventListener(KeyboardEvent.KEY_DOWN, tastLytter);
function keyListener(evt:KeyboardEvent)
{
var key:int = evt.keyCode;
if (key== Keyboard.RIGHT && newSquare.x < 400)
{
newSquare.x += 100;
}
if (key== Keyboard.LEFT && newSquare.x > 0)
{
newSquare.x -= 100;
}
}
function doStuff(evt:TimerEvent)
{
if (newSquare.y <= 400 - newSquare.height)
{
newSquare.y = newSquare.y + 2;
}
if (newSquare.y == 350)
{
newSquare= new Square();
newSquare.y = 0;
newSquare.x = Math.floor(Math.random() * 4) * 100;;
addChild(newSquare);
}
}
答
使用hitTestObject,它是MovieClip类中的一个方法。
if (firstBlock.hitTestObject(secondBlock)) {
trace("This block hit the other block");
//Do stuff
}
显然,这不是一个“插入式”的解决方案 - 你会好得多使用物理引擎,如Box2D,但hitTestObject应该为您的目的做精。