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

2016/9/28

actor walk

Dayuyu Dayuyu

2016/9/28

#
There is anything wrong in my code because the actor do not walk like it is supposed.... when the player walk to right but the picture is back..
    private GreenfootImage kanan = new GreenfootImage ("kanan.png");
    private GreenfootImage kanan1 = new GreenfootImage ("kanan1.png");
    private GreenfootImage kanan2 = new GreenfootImage ("kanan2.png");
    
    private GreenfootImage kiri = new GreenfootImage ("kiri.png");
    private GreenfootImage kiri1 = new GreenfootImage ("kiri1.png");
    private GreenfootImage kiri2 = new GreenfootImage ("kiri2.png");
    
    private GreenfootImage dpn = new GreenfootImage ("dpn.png");
    private GreenfootImage dpn1 = new GreenfootImage ("dpn1.png");
    private GreenfootImage dpn2 = new GreenfootImage ("dpn2.png");
    
    private GreenfootImage blakang = new GreenfootImage ("blakang.png");
    private GreenfootImage belakang1 = new GreenfootImage ("belakang1.png");
    private GreenfootImage belakang2 = new GreenfootImage ("belakang2.png");

 public void checkKey()
    {
        if(Greenfoot.isKeyDown("right"))
        {
            moveRight();
        }
        
        if(Greenfoot.isKeyDown("left"))
        {
            moveLeft();
        }
        
        if(Greenfoot.isKeyDown("up"))
        {
            moveUp();
        }
        
        if(Greenfoot.isKeyDown("down"))
        {
            moveDown();
        }
    }
    public void moveRight()
    {
        setLocation(getX()+ speed, getY());
        animateRight();
    }
    
    public void moveLeft()
    {
        setLocation(getX()- speed, getY());
        animateLeft();
    }
    
    public void moveUp()
    {
        setLocation(getX(), getY()- speed);
        animateUp();
    }
    
     public void moveDown()
    {
        setLocation(getX(), getY()+ speed);
        animateDown();
    }
    
    public void animateRight()
    {
        if(frame == 1)
        {
            setImage(kanan);
        }
        else if(frame == 2)
        {
            setImage(kanan1);
        }
        else if(frame == 3)
        {
            setImage(kanan2);
            frame = 1;
        }
    }
    public void animateLeft()
    {
        if(frame == 4)
        {
            setImage(kiri);
        }
          else if(frame == 5)
        {
            setImage(kiri1);
        }
          else if(frame == 6)
        {
            setImage(kiri2);
            frame = 1;
        }
    }
    public void animateUp()
    {
        if(frame == 7)
        {
            setImage(dpn);
        }
          else if(frame == 8)
        {
            setImage(dpn1);
        }
          else if(frame == 9)
        {
            setImage(dpn2);
            frame = 1;
        }
    }
    public void animateDown()
    {
        if(frame == 10)
        {
            setImage(blakang);
        }
          else if(frame == 11)
        {
            setImage(belakang1);
        }
          else if(frame == 12)
        {
            setImage(belakang2);
            frame = 1;
        }
        frame ++;
        return;
    }
Super_Hippo Super_Hippo

2016/9/28

#
In the animation methods, you should always compare 'frame' with 1, 2 and 3 and not with higher numbers. You should also increment the frame variable in every animation method and not only in the last one.
Dayuyu Dayuyu

2016/9/28

#
ok thank... it work
Dayuyu Dayuyu

2016/9/28

#
another problem the picture only right not turn to left..
    GreenfootImage monster1l = new GreenfootImage("snakeka.png");
    GreenfootImage monster1r = new GreenfootImage("snakeki.png");
    public void setAnimation()
    {
        if(speed<0)
        {
            if(animationCount % 2 == 0)
                animateRight();
        }
        else
        {
            if(animationCount % 2 == 0)
                animateLeft();
        }
    }
     public void animateRight()
    {
        if(frame == 1)
        {
            setImage(monster1r);
            frame = 1;
        }
        frame++;
        return;
    }

    public void animateLeft()
    {
        if(frame == 1)
        {
            setImage(monster1l);
            frame = 1;
        }
        frame++;
        return;
    }
Super_Hippo Super_Hippo

2016/9/28

#
Where do you initiate and change the 'speed' variable? Another possibility is that frame is never set back to 0. So maybe it starts with 0, will be 1 and then 2 and more and more, so it will never be 1 again. What are you trying to achieve with the frame variable in this code?
sonnzz sonnzz

2016/9/28

#
Please help me find difference between setimage and getimage
Super_Hippo Super_Hippo

2016/9/29

#
getImage returns the current image and setImage sets a new image active (which would be returned next time getImage is used).
You need to login to post a reply.