![](/img/trans.png)
[英]Minecraft Bukkit: How can I access properties/methods in another class from the main class?
[英]How can I access an objects methods from another class?
这是标题为“ Main.java”的主类的代码:
import org.lwjgl.LWJGLException;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;
import static org.lwjgl.opengl.GL11.*;
public class Main{
public static void main(String[] args){
try{
Display.setDisplayMode(new DisplayMode(640, 480));
Display.setTitle("LWJGL TESTING");
Display.create();
}catch (LWJGLException e){
e.printStackTrace();
Display.destroy();
System.exit(1);
}
glMatrixMode(GL_PROJECTION);
glOrtho(0, 640, 480, 0, 1, -1);
glMatrixMode(GL_MODELVIEW);
while (!Display.isCloseRequested()){
glClear(GL_COLOR_BUFFER_BIT);
new KeyboardEventHandler();
Line line1 = new Line(100, 100, 200, 200, 1);
Line line2 = new Line(400, 0, 400, 100, 2);
Display.update();
Display.sync(60);
}
Display.destroy();
System.exit(0);
}
}
这是我的名为“ KeyboardEventHandler.java”的KeyboardEventHandler类的代码:
import org.lwjgl.input.Keyboard;
public class KeyboardEventHandler extends Main{
public KeyboardEventHandler(){
if(Keyboard.isKeyDown(Keyboard.KEY_LEFT)){
}
}
}
这是我的标题为“ Line.java”的类:
import static org.lwjgl.opengl.GL11.*;
import org.lwjgl.opengl.*;
import org.lwjgl.*;
import org.lwjgl.opengl.GL11;
public class Line {
int id;
public Line(int startx, int starty, int endx, int endy, int startingid){
glBegin(GL_LINE_STRIP);
glVertex2i(startx, starty);
glVertex2i(endx, endy);
glEnd();
id = startingid;
}
public int getLineId(){
return id;
}
}
我如何从KeyboardEventHandler类访问“ line1”行的getLineId()方法,对于Java来说我还很陌生,所以如果这是一个显而易见的答案,对不起。
您可以将行传递到KeyboardEventHandler构造函数中。
//New KeyboardEventHandler
import org.lwjgl.input.Keyboard;
public class KeyboardEventHandler extends Main{
public KeyboardEventHandler(Line passedLine /* Passing the Line object*/){
if(Keyboard.isKeyDown(Keyboard.KEY_LEFT)){
int lineID = passedLine.getLineId();
}
}
}
然后在你的主班
/*Section from Main class*/
while (!Display.isCloseRequested()){
glClear(GL_COLOR_BUFFER_BIT);
Line line1 = new Line(100, 100, 200, 200, 1);
//Pass line into keyboard event handler\\
new KeyboardEventHandler(line1);
Line line2 = new Line(400, 0, 400, 100, 2);
//Pass line into keyboard event handler\\
new KeyboardEventHandler(line2);
Display.update();
Display.sync(60);
}
要调用该方法,只需使用即可.
表示实例(第1行或第2行)内部的字段或方法(getLineId)。 要将其提供给另一个类,请将您的Line实例之一传递给构造函数。 对于您来说,这将是:
public class KeyboardEventHandler extends Main{
public KeyboardEventHandler(Line line){
if(Keyboard.isKeyDown(Keyboard.KEY_LEFT)){
int line1Id = line1.getLineId();
}
}
}
在调用它时,只需执行new KeyboardEventHandler(myLine);
这种代码结构也存在一些问题,我什至看不到在那里使用另一个类只做一件小事的意义。
另外,如果您不知道这些,建议您在进入此处之前先阅读更多内容。 该站点用于询问已经研究过的问题,但未找到解决方案。 显然,这根本没有被研究过。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.