A Flash Developer Resource Site

Results 1 to 2 of 2

Thread: Walking animation 'on the spot' with certain key presses

  1. #1
    Junior Member
    Join Date
    Feb 2007
    Posts
    6

    Walking animation 'on the spot' with certain key presses

    Got it in the wrong forum last time...

    I have a glitch in my code somewhere, and was wondering if one of you kind souls would help me.

    I have a walking animation frame for a movieclip (frame 5), and a still frame for when it is not in motion (frame 1).

    It all works fine, except for one small glitch.

    If I hold RIGHT (for example), then release, it stops walking.
    If I hold RIGHT, then hold UP, then release UP, then release RIGHT, it continues the walking animation but stops moving.

    Any ideas?

    Code:
    onClipEvent (load) {
    	gotoAndStop(1);
        leftpower = 12;
        rightpower = 12;
        uppower = 12;
    	downpower = 12;
    }
    onClipEvent (enterFrame) {
    	if (Key.isDown (Key.CONTROL))
    	{
    		keydown=true;
    			} 
    	else
    		keydown=false;
    
        if (Key.isDown(Key.LEFT)) {
            _x -= leftpower;
    		gotoAndPlay(5);
    			this._xscale = -100;
        }
        if (Key.isDown(Key.RIGHT)) {
            _x += rightpower;
    		gotoAndPlay(5);
    			this._xscale = 100;
        }
        if (Key.isDown(Key.CONTROL)) {
            gotoAndPlay(12);
        }
        if (Key.isDown(Key.UP)) {
            _y -= uppower;
    		gotoAndPlay(5);
        }
        if (Key.isDown(Key.DOWN)) {
            _y += downpower;
    		gotoAndPlay(5);
        }
    	if (_root.wall.hitTest(_x, _y, true)) {
            xspeed = 0;
            yspeed = 0;
    		leftpower = 0;	
        }
    	else {
    		leftpower = 12;
    	}
    	if (_root.bwall.hitTest(this.touch)) {
            xspeed = 0;
            yspeed = 0;
    		downpower = 0;	
        }
    	else {
    		downpower = 12;
    	}
    		if (_root.twall.hitTest(this.touch)) {
            xspeed = 0;
            yspeed = 0;
    		uppower = 0;	
        }
    	else {
    		uppower = 12;
    	}
    	   if (_root.leadpipe.leadpipetouch.hitTest(this.touch)) {
            _root.leadpipe._x = -1000
    		gotoAndPlay(5);
    
        }
    } 
    onClipEvent (keyUp) {
      if (Key.getCode() == Key.RIGHT) {
          gotoAndPlay(1)
      } 
    }
    onClipEvent (keyUp) {
      if (Key.getCode() == Key.LEFT) {
          gotoAndPlay(1)
      } 
    }
    onClipEvent (keyUp) {
      if (Key.getCode() == Key.UP) {
          gotoAndPlay(1)
      } 
    }
    onClipEvent (keyUp) {
      if (Key.getCode() == Key.DOWN) {
          gotoAndPlay(1)
      } 
    }
    After playing about, I think I've narrowed it down to this (again, this is an example, because whether you press a combination of up, down, left, or right - the glitch still appears):


    Code:
    onClipEvent (keyUp) {
      if (Key.getCode() == Key.UP) {
          gotoAndPlay(1)
      } 
    }
    Works fine on its own, but when combined with right, for example, it doesn't seem to gotoAndPlay frame 1, it just continues to play frame 5.

    I'm thinking maybe

  2. #2
    Junior Member
    Join Date
    Feb 2007
    Posts
    6
    I finally got it!

    Code:
    	if (Key.isDown(Key.LEFT) == false && Key.isDown(Key.DOWN) == false && Key.isDown(Key.RIGHT) == false && Key.isDown(Key.UP) == false) {
    gotoAndStop(1);
    	}

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  




Click Here to Expand Forum to Full Width

HTML5 Development Center