This site requires JavaScript, please enable it in your browser!
Greenfoot back
n1nikko
n1nikko wrote ...

2014/6/9

Need help switching spirtes when i change directions

n1nikko n1nikko

2014/6/9

#
whenever I move right it will display the right sprites, but i don't know how to make it display the left sprites when it moves left. Code: import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) /** * Write a description of class Character here. * * @author (your name) * @version (a version number or a date) */ public class Person extends Actor { private GreenfootImage image2; private GreenfootImage image3; private GreenfootImage image4; private GreenfootImage image5; private GreenfootImage image6; private GreenfootImage image7; private GreenfootImage image8; private GreenfootImage image9; private GreenfootImage image10; private GreenfootImage image11; private GreenfootImage image2L; private GreenfootImage image3L; private GreenfootImage image4L; private GreenfootImage image5L; private GreenfootImage image6L; private GreenfootImage image7L; private GreenfootImage image8L; private GreenfootImage image9L; private GreenfootImage image10L; private GreenfootImage image11L; private int vSpeed = 0; private int acceleration = 2; public Person() { image2 = new GreenfootImage ("Character2.png"); image3 = new GreenfootImage ("Character3.png"); image4 = new GreenfootImage ("Character4.png"); image5 = new GreenfootImage ("Character5.png"); image6 = new GreenfootImage ("Character6.png"); image7 = new GreenfootImage ("Character7.png"); image8 = new GreenfootImage ("Character8.png"); image9 = new GreenfootImage ("Character9.png"); image10 = new GreenfootImage("Character10.png"); image11 = new GreenfootImage("Character11.png"); image2L = new GreenfootImage("Character2Left.png"); image3L = new GreenfootImage("Character3Left.png"); image4L = new GreenfootImage("Character4Left.png"); image5L = new GreenfootImage("Character5Left.png"); image6L = new GreenfootImage("Character6Left.png"); image7L = new GreenfootImage("Character7Left.png"); image8L = new GreenfootImage("Character8Left.png"); image9L = new GreenfootImage("Character9Left.png"); image10L = new GreenfootImage("Character10Left.png"); image11L = new GreenfootImage("Character11Left.png"); setImage(image2); } /** * Act - do whatever the Character wants to do. This method is called whenever * the 'Act' or 'Run' button gets pressed in the environment. */ public void act() { if (Greenfoot.isKeyDown("left")) { move(-4); movementLeft(); } if (Greenfoot.isKeyDown("right")) { movementRight(); move(4); } checkFall(); } public void fall() { setLocation(getX(), getY()+ vSpeed); vSpeed = vSpeed + acceleration; } public boolean onGround() { int spriteHeight = getImage().getHeight(); int lookForGround = (int) (spriteHeight/4) + 5; Actor ground = getOneObjectAtOffset(0, lookForGround, Ground.class); if (ground == null) { return false; }else{ return true; } } public void checkFall() { if(onGround()) { vSpeed=0; } else { fall(); } } public void movementRight() { if (getImage().equals(image2)) { setImage (image3); }else if(getImage().equals(image3)) { setImage (image4); }else if (getImage().equals(image4)) { setImage (image5); }else if (getImage().equals(image5)) { setImage (image6); }else if (getImage().equals(image6)) { setImage (image7); }else if(getImage().equals(image7)) { setImage (image8); }else if(getImage().equals(image8)) { setImage (image9); }else if(getImage().equals(image9)) { setImage (image10); }else if(getImage().equals(image10)) { setImage (image11); }else if(getImage().equals(image11)) { setImage (image3); } } public void movementLeft() { if (getImage().equals(image2L)) { setImage (image3L); }else if(getImage().equals(image3L)) { setImage (image4L); }else if (getImage().equals(image4L)) { setImage (image5L); }else if (getImage().equals(image5L)) { setImage (image6L); }else if (getImage().equals(image6L)) { setImage (image7L); }else if(getImage().equals(image7L)) { setImage (image8L); }else if(getImage().equals(image8L)) { setImage (image9L); }else if(getImage().equals(image9L)) { setImage (image10L); }else if(getImage().equals(image10L)) { setImage (image11L); }else if(getImage().equals(image11L)) { setImage (image3L); } } }
davmac davmac

2014/6/9

#
Please use code tags when posting code so that your code is readable, easy to copy/paste, and easy to identify lines by number.
lordhershey lordhershey

2014/6/9

#
This question was asked in this thread yesterday. Advice is still the same, you movementLeft and movementRight need a way to define a default image if none of those ifs match.
n1nikko n1nikko

2014/6/9

#
lordhershey wrote...
This question was asked in this thread yesterday. Advice is still the same, you movementLeft and movementRight need a way to define a default image if none of those ifs match.
Whenever i make it so when i hit the right key to make the image default, it will stay as that image, and not cycle threw the sprites
lordhershey lordhershey

2014/6/9

#
   public void movementLeft()
    {
        if (getImage().equals(image2L))
        {
            setImage (image3L);    
        }
        else if(getImage().equals(image3L))
        {
            setImage (image4L);
        }
        else if (getImage().equals(image4L))
        {
            setImage (image5L);
        }
        else if (getImage().equals(image5L))
        {
            setImage (image6L);
        }
        else if (getImage().equals(image6L))
        {
            setImage (image7L);
        }
        else if(getImage().equals(image7L))
        {
            setImage (image8L);
        }
        else if(getImage().equals(image8L))
        {
            setImage (image9L);
        }
        else if(getImage().equals(image9L))
        {
            setImage (image10L);
        }
        else if(getImage().equals(image10L))
        {
            setImage (image11L);
        }
        else 
        {
            //No other image matched go back to image2L
            setImage (image2L);
        }
    }
Using an array and a counter variable would be a little easier. Try this, if the images start to cycle when going left, then try something similar for images going right. then when you get there we show you how to do it with a counter and an array.
n1nikko n1nikko

2014/6/9

#
Thanks a lot it worked, and do you know how to do side scrolling?
You need to login to post a reply.