2016-05-29 15 views
-1

Ich habe ein kleines Problem, wenn ich versuche, die Quadrate zu stapeln, fast wie in Tetris. Ich weiß nicht, wie ich die verschiedenen Quadrate kontrollieren kann, damit ich auf Kollision überprüfen kann. Ich habe ein Quadrat mit as3 Verknüpfungsname Square gemacht.Wie kann ich Kollisionen erkennen und fallende Objekte in as3 flash stapeln?

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); 

    } 



    } 

Antwort

0

Verwenden Sie hitTestObject, es ist eine Methode in der MovieClip-Klasse.

if (firstBlock.hitTestObject(secondBlock)) { 
    trace("This block hit the other block"); 
    //Do stuff 
} 

Offensichtlich ist dies keine „drop-in“ Lösung - Sie wären viel besser dran mit einer Physik-Engine wie Box2D verwenden, aber hitTestObject sollte für Ihre Zwecke in Ordnung tun.