2015-04-02 57 views
1

我想使一个变量作为文件名。我想要一个通用的命令,当一个子类继承时,可以设置一个文件名作为变量。文件名是一个变量

代码编译只是好玩,但是当我运行它,我按d或移动的化身,我收到了popupwindow说找不到文件的关键:avatarRight

编辑:如果我从删除引号参数列表并初始化正上方,然后将文件名运行,但我希望能够初始化变量在子类中,使多个子类可以有不同的图像

超类方法:

/** 
* Sets up the movement keys and facing for the Object 
*/ 
public void movement() 
{ 
    String avatarRight = "Alien.png"; 
    String avatarLeft = "Alien1.png"; 

    if (atWorldEdge() == false) 
     { 
     if (Greenfoot.isKeyDown("w")) 
     { 
      setLocation(getX(), getY()-1); 
     } 
     if (Greenfoot.isKeyDown("d")) 
     { 
      setImage(avatarRight); 
      setLocation(getX()+1, getY()); 
     } 
     if (Greenfoot.isKeyDown("s")) 
     { 
      setLocation(getX(), getY()+1); 
     } 
     if (Greenfoot.isKeyDown("a")) 
     { 
      setImage(avatarLeft); 
      setLocation(getX()-1, getY()); 
     } 
     } 
    else 
     { 
     } 
} 

子类:

public class Alien extends Living 
{ 
    private String avatarRight = "Alien.png"; 
    private String avatarLeft = "Alien1.png"; 
    /** 
    * Act - do whatever the Alien wants to do. This method is called whenever 
    * the 'Act' or 'Run' button gets pressed in the environment. 
    */ 
    public void act() 
    { 
     movement(); 
    }  
} 
+0

你有什么问题? – 2015-04-02 23:29:31

+0

该代码编译只是有趣的,但当我运行它,我按d或一个键来移动头像我得到一个popupwindow说 找不到文件:avatarRight – power5000 2015-04-02 23:31:48

+0

你应该编辑你的问题,并把它的问题描述 – 2015-04-02 23:33:28

回答

0

相反声明方法movement内的图像变量,而不是宣称要将class内使用,并且变量传递到您要使用它的方法之一。的

所以不是这样:

public void movement() 
{ 
String avatarRight = "Alien.png"; 
String avatarLeft = "Alien1.png"; 
... 

这:

public class Alien extends Living 
{ 
    private String avatarRight = "Alien.png"; 
    private String avatarLeft = "Alien1.png"; 
    /** 
* Act - do whatever the Alien wants to do. This method is called  whenever 
* the 'Act' or 'Run' button gets pressed in the environment. 
*/ 
public void act() 
{ 
    movement(); 
}  
} 

这样做:

public void movement(String avatarLeft, String avatarRight) 
{ 
... 

这:

public class Alien extends Living 
{ 
    private String avatarRight = "Alien.png"; 
    private String avatarLeft = "Alien1.png"; 
/** 
* Act - do whatever the Alien wants to do. This method is called   whenever 
* the 'Act' or 'Run' button gets pressed in the environment. 
*/ 
public void act() 
{ 
    movement(avatarLeft, avatarRight); 
}  
} 

这将允许您将不同的图像从不同的头像类传递到移动方法。