Programmering‎ > ‎exempel‎ > ‎

animationsstyrning med piltangenterna

I exemplet finns det två MovieClip.
Skepp har flera namngivna keyframes där MovieClipet Flame ligger vid olika raketmotorer.

animationsstyrning med piltangenterna.fla

//håller redan på vilken tangent som är nedtryckt
var leftArrow:Boolean = false;
var rightArrow:Boolean = false;
var upArrow:Boolean = false;
var downArrow:Boolean = false;

//hastighet
var speed_y:Number = 0;
var speed_x:Number = 0;

//acceleration
var acc:Number = 1.5;

//lyssnare för tangenter
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressedDown);
stage.addEventListener(KeyboardEvent.KEY_UP, keyPressedUp);

//lägger till eventlyssnare för move
stage.addEventListener(Event.ENTER_FRAME, moveSkepp);

function keyPressedDown(e:KeyboardEvent) {
    //kontrollerar vilken tangent som eventet gäller
    //hoppar även till den frame i MovieClipet där rätt animation
    //finns (om tangenten inte redan är nedtryckt)
    if (e.keyCode == 37) {
        if(leftArrow == false){
            skepp_mc.gotoAndStop("left");
        }
        leftArrow = true;
    }
    if (e.keyCode == 39) {
        if(rightArrow == false){
            skepp_mc.gotoAndStop("right");
        }
        rightArrow = true;
    }
    if (e.keyCode == 38) {
        if(upArrow == false){
            skepp_mc.gotoAndStop("up");
        }
        upArrow = true;
    }
    if (e.keyCode == 40) {
        if(downArrow == false){
            skepp_mc.gotoAndStop("down");
        }
        downArrow = true;
    }
}

function keyPressedUp(e:KeyboardEvent) {
    //går till framen där ingen flame-animation är igång
     skepp_mc.gotoAndStop("stop");
   
     //kontrollerar vilken tangent som eventet gäller
    if (e.keyCode == 37) {
        leftArrow = false;
    } else if (e.keyCode == 39) {
        rightArrow = false;
    }
    if (e.keyCode == 38) {
        upArrow = false;
    } else if (e.keyCode == 40) {
        downArrow = false;
    }
}

function moveSkepp(e:Event) {
    //flyttar skeppet
    skepp_mc.y += speed_y;
    skepp_mc.x += speed_x;

    //ökar eller minskar hastigheten beroende av tengent
    if (leftArrow) {
        speed_x -= acc;
    }
    if (rightArrow) {
        speed_x += acc;
    }
    if (upArrow) {
        speed_y -= acc;
    }
    if (downArrow) {
        speed_y += acc;
    }
}

För att ta reda på vilken keyCode som hör till respektive tangent kör "keycodeGenerator.swf"
ċ
animationssyrningmedpiltangenterna.fla
(512k)
Olof Olsson,
13 okt. 2008 07:11
ċ
Olof Olsson,
13 okt. 2008 07:11
ċ
Olof Olsson,
8 dec. 2008 03:18
Comments