Java-Gaming.org    
Featured games (81)
games approved by the League of Dukes
Games in Showcase (487)
Games in Android Showcase (110)
games submitted by our members
Games in WIP (552)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Movement animation  (Read 779 times)
0 Members and 1 Guest are viewing this topic.
Offline Cirdan

Senior Newbie




Java games rock!


« Posted 2005-03-26 04:26:28 »

Sorry about all these questions but I have one more.

I have this sprite sheet were the first three imaegs are the animaton for the guy walking up, then thenext 3 are of him walking down etc. I have figured out how to do this animation, but for some reason, my code doesn't want my guy to "walk"

In my KeyPeessed It moves the character and trigers it to change frames by setting the varaible walking to true...

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
24  
25  
26  
            //Check arrows for character movement
     if(e.getKeyCode() == keyUp){
            player_y = player_y - 3;
            walk = true;
            walking = true;
            dir = 1;
            repaint();
      } else if (e.getKeyCode() == keyDown){
            player_y = player_y + 3;
            walk = true;
            walking = true;
            dir = 2;
            repaint();
      } else if (e.getKeyCode() == keyLeft){
            player_x = player_x - 3;
            dir = 3;
            walk = true;
            walking = true;
            repaint();
      } else if (e.getKeyCode() == keyRight){
            player_x = player_x + 3;
            dir = 4;
            walk = true;
            walking = true;
            repaint();
      }


Then in the KeyRelease method, I make he animation stop by turning off walking.....

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  
23  
public void keyReleased(KeyEvent e){ 

      if(e.getKeyCode() == keyUp){

            walking = false;

      } else if (e.getKeyCode() == keyDown){

            walking = false;

      } else if (e.getKeyCode() == keyLeft){


            walking = false;

      } else if (e.getKeyCode() == keyRight){

            walking = false;

      }


      }


Then what does the animation is in my very own drawAvatar method..... READ THE NOTES IN THE CODE

[code]
     public void drawAvatar(Image avatar,int x,int y,int sprite,int frame,Graphics g){
           int sprite2;
           int up = 0;
           int down = 96;
           int left = 192;
           int right = 288;
     
           sprite2 = sprite * 32;
           //The following IF statements is suppos to trigger the animation....
           if(walk==true){
                 up = 0;
                 down = 96;
                 left = 192;
                 right = 288;

                         //if walking == true, then keep doing the animations, else stop. If you take away the if statement and keep walk = false, the animation will play indefinatly, that is my problem. The animation won't play because of if walking = true

           if(walking == true){
                       walk = false;
                 } else {
                       walk = true;
                 }
                       
           }else if(walk==false){
                 up = 32;
                 down = 128;
                 left = 224;
                 right = 320;
                 walk = true;
           }
           
     
           
           switch(frame){
           
                 case 1:
                       //Up
     
                       g.drawImage(avatar,x,y,x+32,y+32,up,sprite2,up + 32,sprite2+32,this);
                       repaint();
                 break;
                 
                 case 2:
                       //Down
                       g.drawImage(avatar,x,y,x+32,y+32,down,sprite2,down + 32,sprite2+32,this);
                       repaint();
                 break;
                 
                 case 3:
                       //Left
                       g.drawImage(avatar,x,y,x+32,y+32,left,sprite2,left + 32,sprite2+32,this);
                       repaint();
                 break;
                 
                 case 4:
                       //Right                            x    y       x           y
                       g.drawImage(avatar,x,y,x+32,y+32,right,sprite2,right + 32,sprite2+32,this);
                       repaint();
                 break;
           }
     }


[code[
Offline jamdr

Senior Newbie




Java games rock!


« Reply #1 - Posted 2005-03-31 14:27:43 »

For one thing, you should avoid moving the player directly in the KeyListener methods. Instead of setting player_x and player_y as soon as a key press is detected, you could set a boolean leftPressed, rightPressed, etc. and then move the player during the game loop. You should also be repainting during the game loop, too.

As far as animation goes, you have a lot of booleans that have confusingly similiar names (walk vs. walking?). I think your code is mostly right, though. Try something like this:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
if (leftPressed && !rightPressed) {
      //the left arrow is pressed, so set animation to walk left if it's not already
     if (animation != WALK_LEFT)
            setAnimation(WALK_LEFT);
      player_x -= dx;
} else if (rightPressed && !leftPressed) {
      //the right arrow is pressed, so set animation to walk right
     if (animation != WALK_RIGHT)
            setAnimation(WALK_RIGHT);
      player_x += dx;
} else {
      //if no key is pressed, stop walking
     if (animation == WALK_LEFT)
            setAnimation(STAND_LEFT);
      if (animation == WALK_RIGHT)
            setAnimation(STAND_RIGHT);
}


There may be a better way to do that, but that's what I just came up with.
Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

CopyableCougar4 (23 views)
2014-08-22 19:31:30

atombrot (34 views)
2014-08-19 09:29:53

Tekkerue (30 views)
2014-08-16 06:45:27

Tekkerue (28 views)
2014-08-16 06:22:17

Tekkerue (18 views)
2014-08-16 06:20:21

Tekkerue (27 views)
2014-08-16 06:12:11

Rayexar (65 views)
2014-08-11 02:49:23

BurntPizza (41 views)
2014-08-09 21:09:32

BurntPizza (31 views)
2014-08-08 02:01:56

Norakomi (41 views)
2014-08-06 19:49:38
List of Learning Resources
by Longor1996
2014-08-16 10:40:00

List of Learning Resources
by SilverTiger
2014-08-05 19:33:27

Resources for WIP games
by CogWheelz
2014-08-01 16:20:17

Resources for WIP games
by CogWheelz
2014-08-01 16:19:50

List of Learning Resources
by SilverTiger
2014-07-31 16:29:50

List of Learning Resources
by SilverTiger
2014-07-31 16:26:06

List of Learning Resources
by SilverTiger
2014-07-31 11:54:12

HotSpot Options
by dleskov
2014-07-08 01:59:08
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!