为了解释,我正在使用Swing在Java中创建一个简单的游戏。在我的很多课程中都需要使用JFrame的大小。起初我只是创建了一个包含变量的超类,但我不得不找到一些不同的东西,因为Java只允许你扩展一次,我需要使用超类,原因各不相同。如果这是有道理的。
我在内存中存储了相同信息的多个实例。
变量如:
JFrame高度和宽度,以像素和平铺显示
以像素和平铺显示地图高度和宽度
“平铺”高度和宽度
以下是一些更好地描绘图片的代码:
protected static int SCREEN_WIDTH = 928;//Pixels
protected static int SCREEN_HEIGHT = 672;//Pixels
protected static int TILE_WIDTH = 32;//Pixels
protected static int TILE_HEIGHT = 32;//Pixels
protected int MAP_WIDTH = 1280;//Pixels
protected int MAP_HEIGHT = 1280;//Pixels
protected int MAP_WIDTHtile = MAP_WIDTH / TILE_WIDTH;
protected int MAP_HEIGHTtile = MAP_HEIGHT / TILE_HEIGHT;
protected static int XTILES = SCREEN_WIDTH / TILE_WIDTH;//how many tiles can fit on display x axis;
protected static int YTILES = SCREEN_HEIGHT / TILE_HEIGHT;//how many tiles can fit on display y axis;
protected ArrayList<BufferedImage> images;
protected ArrayList<ArrayList<Integer>> displayArray2;
protected ArrayList<ArrayList<Integer>> mapGlobal2;
protected static int xIndex = 0;
protected static int yIndex = 0;
在我的整个程序中,几乎所有这些变量都需要多个类。而且我结果多次宣布它。我不禁想到我正在实施这个可怕的方法,必须有一个更好的方法来做到这一点。我也觉得好像将所有这些信息作为参数传递给类构造函数并不是最好的路径。
答案 0 :(得分:1)
为这些变量创建一个类,实例化一次并将其传递给代码。
如果只有一个实例,请将其设为静态。
您甚至可以开始添加方法,以便更好地操作数据..; - )
答案 1 :(得分:0)
我们采用JFrame示例。例如:您需要在另一个类MyClass中设置JFrame的高度。您可以在MyClass类的构造函数中传递JFrame实例变量。这是Myclass的构造函数。
public MyClass(JFrame frame){ this.frame = frame;}
当您实例化MyClass时,您传递了帧实例MyClass my = new MyClass(frame)
现在你的MyClass中有一个框架句柄。您可以使用它来调用框架的方法,例如fame.setHeight(450);
这种方法更符合逻辑,面向对象,因为您使用框架实例调用框架方法。