【问题标题】:Java use var value from a different method that is called in a different classJava 使用来自不同类中调用的不同方法的 var 值
【发布时间】:2019-08-03 14:47:28
【问题描述】:

我正在制作一个游戏,我的问题是我想在一个方法中加载我的所有资产,然后在不同的类中调用该方法。

这是我的武器loadAssets()方法。

public void loadAssets() {
     BufferedImageLoader loader = new BufferedImageLoader();
     MP5Sprite = loader.loadImage("/img/weapons/Sprite001.png");

     SpriteSheet ss = new SpriteSheet(MP5Sprite);
     MP5Side = ss.grabImage(0, 0, 27, 10);
     MP5Top = ss.grabImage(32, 0, 3, 28);
}

这些变量是在我的类开始时声明的,但值仅在此方法中生成。

我想在我的主游戏类中调用它,在开始时一切都像这样加载。

for(int i = 0; i < com.main.engine.Handler.object.size(); i++) {
    GameObject tempObject = com.main.engine.Handler.object.get(i);
    tempObject.loadAssets();
}

这就是我在主游戏类中调用该方法的方式,但是因为我没有在武器类中调用它,所以它不会让我将这些变量与我给它们的值一起使用,如果不可能的话我可以想出另一种解决方案,但如果是这样,那就太好了。

我想在开始时加载所有内容,因为之前只有在将实体添加到游戏/世界时才会加载更多图像/声音,例如它的资产仅在生成该实体时加载。因为我会在每个类的 main 方法中加载所有资产。

【问题讨论】:

  • 你需要一个关于变量、对象、类和方法的教程或老师。

标签: java methods


【解决方案1】:

我的建议是将 loadAssets() 中的所有内容放在一个静态块中,如果它只需要执行一次,即在初始化阶段。

【讨论】:

    【解决方案2】:

    可能的解决方案可以使用this.localvariable 在这里我以您的代码为例:

    public void loadAssets() {
         BufferedImageLoader loader = new BufferedImageLoader();
         this.MP5Sprite = loader.loadImage("/img/weapons/Sprite001.png");
    
         SpriteSheet ss = new SpriteSheet(this.MP5Sprite);
         this.MP5Side = ss.grabImage(0, 0, 27, 10);
         this.MP5Top = ss.grabImage(32, 0, 3, 28);
    }
    

    这可以帮助你理解这个Difference between this.variable and variable in Java

    【讨论】:

      猜你喜欢
      • 2015-08-04
      • 1970-01-01
      • 2015-04-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-21
      • 1970-01-01
      相关资源
      最近更新 更多