2017-07-01 2 views
3

Je fais un jeu en adobe animer avec AS3.Je veux arrêter mon carré quand il entre en collision avec la barrière de gauche et ne pas le laisser passer. Le nom de l'instance de ma boîte est appelé «boîte» et mes barrières sont appelées «gauche» et «droite».Adobe animation collision

Voici une image de mon étape: image of stage

Et voici mon code pour déplacer la boîte jusqu'à présent:

var upPressed:Boolean = false; 
var downPressed:Boolean = false; 
var leftPressed:Boolean = false; 
var rightPressed:Boolean = false; 

box.addEventListener(Event.ENTER_FRAME, fl_MoveInDirectionOfKey); 
stage.addEventListener(KeyboardEvent.KEY_DOWN, fl_SetKeyPressed); 
stage.addEventListener(KeyboardEvent.KEY_UP, fl_UnsetKeyPressed); 

function fl_MoveInDirectionOfKey(event:Event) 
{ 
    if (leftPressed) 
    { 
    box.x -= 5; 
    } 

    if (rightPressed) 
    { 
    box.x += 5; 
    } 
} 

function fl_SetKeyPressed(event:KeyboardEvent):void 
{ 
    switch (event.keyCode) 
    { 
    case Keyboard.LEFT: 
    { 
     leftPressed = true; 
     break; 
    } 
    case Keyboard.RIGHT: 
    { 
     rightPressed = true; 
     break; 
    } 
    } 
} 

function fl_UnsetKeyPressed(event:KeyboardEvent):void 
{ 
switch (event.keyCode) 
{ 
    case Keyboard.LEFT: 
    { 
     leftPressed = false; 
     break; 
    } 
    case Keyboard.RIGHT: 
    { 
     rightPressed = false; 
     break; 
    } 
    } 
} 

Merci très beaucoup!

+0

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/DisplayObject .html # hitTestObject() – Organis

Répondre

1

Vous avez besoin quelque chose comme

if (box.hitTestObject(left)) box.x = left.x + left.width; 
if (box.hitTestObject(right)) box.x = right.x - box.width; 

ajouté à la fin de fl_MoveInDirectionOfKey fonction