2

texture[]クラス内の配列(Texturesクラス内にある) 内の変数を使用できるようにする必要がありますBoard。しかし、私はそれを行う方法を理解できません。

これは、Java で物事を追加する方法を理解しようとしているTextures私です。ゲームの作成方法を学ぼうとしています。だから私はとても初心者です(笑)。

texture[]これは、配列を使用したいクラスです。

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Image;
import javax.swing.ImageIcon;
import javax.swing.JPanel;

public class Board extends JPanel{
    
    public Board(){
        
    }
    
    public void paint(Graphics g){
        g.drawImage(texture[1], 0, 0, null);
        g.setFont(new Font("Verdana", 0, 50));
        g.setColor(Color.YELLOW);
        g.drawString(": FPS", 20, 50);
    }
    
    public void update(){
        repaint();
    }
}

texture[]これは、配列を作成するクラスです。

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;

public class Textures {

    BufferedImage img;
    private int w, h;
    public int id[];
    public Image texture[];
    
    public Textures() throws IOException {
        URL url = this.getClass().getResource("Resources/Textures.png");
        img = ImageIO.read(url);
        w = 0;
        h = 0;
        for(int i1 = 0; i1 < 16; i1++){
            texture[i1] = img.getSubimage(w, h, 16, 16);
            id[i1] = i1;
            w += 16;
            h += 16;
        }
    }
}
4

1 に答える 1

2

texture変数は公開されているので、次のようにします。

texturesClassInstance.texture;

他の方法で:

public class Board extends JPanel{

    public void someMethod(){

        Textures texturesClassInstance = new Textures();

        Image image1 = texturesClassInstance.texture[0];
        Image image2 = texturesClassInstance.texture[1];

        //do something with image1 and image2
    }
}

クラス内Boardですが、最良の方法は、次のように宣言してprivateメソッドを作成することです。

public class Textures {

    // more variables
    private Image texture[];

    // more code

    public Image[] getTextures(){
        return this.texture;
    }

}
于 2012-08-14T19:24:40.923 に答える