# Easing in and out

**URL:** <https://forum.kirupa.com/t/easing-in-and-out/301732>\
**Category:** flash\
**Created:** [December 14, 2009, 9:53pm UTC](https://forum.kirupa.com/t/easing-in-and-out/301732 "2009-12-14T21:53:29Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![ZEGMAN](https://avatars.discourse-cdn.com/v4/letter/z/a9adbd/32.png) [@ZEGMAN](https://forum.kirupa.com/u/ZEGMAN)\
**Post date:** [December 14, 2009, 9:53pm UTC](https://forum.kirupa.com/t/easing-in-and-out/301732/1 "2009-12-14T21:53:29Z")

</div>

# Hey guys, I have a player which moves with the arrow keys, the player gains speed gradually and that works great, however I want it so that when they let go of the key, the character eases out and slowsly slows down to a stop. I have the code:

var i:Number = 0;  
var speed:Number = 0;  
var booster:Boolean = false;  
var bkeyDown:Boolean = false;  
var bkeyUp:Boolean = false;  
var bkeyLeft:Boolean = false;  
var bkeyRight:Boolean = false;  
onEnterFrame = function () {  
//point at mouse code  
var dy = \_ymouse - player.\_y;  
var dx = \_xmouse - player.\_x;  
var radians = Math.atan2(dy, dx);  
\_root.player.\_rotation = radians \* 180 / Math.PI;

// move code  
if (Key.isDown(Key.DOWN)) {  
bkeyDown = true;  
\_root.player.\_y += speed;  
if (speed \< 18) {  
speed += .1;  
}  
booster = true;  
}  
else {  
bkeyDown = false;  
}  
if (Key.isDown(Key.UP)) {  
bkeyUp = true;  
\_root.player.\_y -= speed;  
if (speed \< 18) {  
speed += .1;  
}  
booster = true;  
}  
else {  
bkeyUp = false;  
}  
if (Key.isDown(Key.LEFT)) {  
bkeyLeft = true;  
\_root.player.\_x -= speed;  
if (speed \< 18) {  
speed += .1;  
}  
booster = true;  
}  
else {  
bkeyLeft = false;  
}  
if (Key.isDown(Key.RIGHT)) {  
bkeyRight = true;  
\_root.player.\_x += speed;  
if (speed \< 18) {  
speed += .1;  
}  
booster = true;  
}  
else {  
bkeyRight = false;  
}

if (booster) {  
attachEffect();  
}  
//ease out code

else{  
if(speed \> 0){  
speed -= .7;  
}  
if(bkeyRight == false){  
if(speed \> 0){  
\_root.player.\_x += speed;  
}  
}  
if(bkeyLeft == false){  
if(speed \> 0){  
\_root.player.\_x -= speed;  
}  
}  
if(bkeyUp == false){  
if(speed \> 0){  
\_root.player.\_y -= speed;  
}  
}  
if(bkeyDown == false){  
if(speed \> 0){  
\_root.player.\_y += speed;  
}  
}  
}

booster = false;  
\_root.player.swapDepths(\_root.getNextHighestDepth());  
};

========================

But it doesn’t work. ☹ help please?
