【问题标题】:filename being a variable文件名是一个变量
【发布时间】:2015-04-02 23:24:11
【问题描述】:

我正在尝试将变量作为文件名。我想要一个通用命令,当它被子类继承时,可以将文件名设置为变量。

代码编译很有趣,但是当我运行它并按 d 或键移动头像时,我得到一个弹出窗口,说找不到文件: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();
    }    
}

【问题讨论】:

  • 你有什么问题?
  • 代码编译很有趣,但是当我运行它并按 d 或键移动头像时,我得到一个弹出窗口,说找不到文件:avatarRight
  • 您应该编辑您的问题并将问题描述放入其中
  • 我错过了什么吗?如何将文字字符串 "avatarRight" 传递给 setImage 甚至编译?
  • 我相信它正在寻找一个名为 avatarRight 的文件,而不是寻找一个变量。所以它编译但是当它需要文件时它找不到它......

标签: java variables filenames greenfoot


【解决方案1】:

不要在方法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);
}    
}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-04
    • 2021-08-22
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多