如何检测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应该为您的目的做精。