Hi! I made a working example: https://goo.gl/LhKdeE Here is the code: import flash.display.MovieClip; import flash.events.KeyboardEvent; import flash.ui.Keyboard; import flash.events.Event; import flash.display.DisplayObject; var friction:Number = 0.85; var p1:Object = { target:circle, upKey:Keyboard.W, rightKey:Keyboard.D, downKey:Keyboard.S, leftKey:Keyboard.A, upPressed:false, rightPressed:false, downPressed:false, leftPressed:false, keyForce:1, speedX:0, speedY:0, maxSpeedX:10, maxSpeedY:10, color:"red" }; var p2:Object = { target:square, upKey:Keyboard.UP, rightKey:Keyboard.RIGHT, downKey:Keyboard.DOWN, leftKey:Keyboard.LEFT, upPressed:false, rightPressed:false, downPressed:false, leftPressed:false, keyForce:1, speedX:0, speedY:0, maxSpeedX:15, maxSpeedY:15, color:"red" }; function keyHandler(e:KeyboardEvent):void { if (e.type == KeyboardEvent.KEY_DOWN) { if (e.keyCode == p1.upKey) p1.upPressed = true; if (e.keyCode == p1.rightKey) p1.rightPressed = true; if (e.keyCode == p1.downKey) p1.downPressed = true; if (e.keyCode == p1.leftKey) p1.leftPressed = true; if (e.keyCode == p2.upKey) p2.upPressed = true; if (e.keyCode == p2.rightKey) p2.rightPressed = true; if (e.keyCode == p2.downKey) p2.downPressed = true; if (e.keyCode == p2.leftKey) p2.leftPressed = true; } if (e.type == KeyboardEvent.KEY_UP) { if (e.keyCode == p1.upKey) p1.upPressed = false; if (e.keyCode == p1.rightKey) p1.rightPressed = false; if (e.keyCode == p1.downKey) p1.downPressed = false; if (e.keyCode == p1.leftKey) p1.leftPressed = false; if (e.keyCode == p2.upKey) p2.upPressed = false; if (e.keyCode == p2.rightKey) p2.rightPressed = false; if (e.keyCode == p2.downKey) p2.downPressed = false; if (e.keyCode == p2.leftKey) p2.leftPressed = false; } } function enterFrameHandler(e:Event):void { movePlayer(p1); movePlayer(p2); checkCollision(p1.target, p2.target); checkCollision(p2.target, p1.target); if (div.colors.currentLabel != p2.color) { checkCollision(p1.target, div); checkCollision(p2.target, div); } else { if (!p2.target.hitTestObject(div)) checkCollision(p1.target, div); } } function movePlayer(p:Object):void { if (p.upPressed) p.speedY -= p.keyForce; if (p.rightPressed) p.speedX += p.keyForce; if (p.downPressed) p.speedY += p.keyForce; if (p.leftPressed) p.speedX -= p.keyForce; p.speedX *= friction; p.speedY *= friction; if (p.speedX > p.maxSpeedX) p.speedX = p.maxSpeedX; else if (p.speedX < -p.maxSpeedX) p.speedX = -p.maxSpeedX; if (p.speedY > p.maxSpeedY) p.speedY = p.maxSpeedY; else if (p.speedY < -p.maxSpeedY) p.speedY = -p.maxSpeedY; p.target.x += p.speedX; p.target.y += p.speedY; } function checkCollision(p:Object, obstacle:Object):void { if (p.hitTestObject(obstacle)) { // horizontal collisions if (p.x < obstacle.x - obstacle.width * 0.5 || p.x > obstacle.x + obstacle.width * 0.5) { if (p.x <= obstacle.x) p.x = obstacle.x - p.width * 0.5 - obstacle.width * 0.5; else if (p.x > obstacle.x) p.x = obstacle.x + p.width * 0.5 + obstacle.width * 0.5; } // vertical collisions else if (p.y < obstacle.y - obstacle.height * 0.5 || p.y > obstacle.y + obstacle.height * 0.5) { if (p.y <= obstacle.y) p.y = obstacle.y - p.height * 0.5 - obstacle.height * 0.5; else if (p.y > obstacle.y) p.y = obstacle.y + p.height * 0.5 + obstacle.height * 0.5; } } } stage.addEventListener(KeyboardEvent.KEY_DOWN, keyHandler); stage.addEventListener(KeyboardEvent.KEY_UP, keyHandler); stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler); Notice that I used frames to check for the colors. I hope it helps!
... View more