java在不同时间调用类时遇到问题
首先,我为不能准确回答我的问题而道歉
我面临的问题是,我有一个包含4个类的数组列表,它们做着完全相同的事情,只是需要在不同的时间调用它们(当第一个类的坐标超过某个值时),但是我很难完成它,而且在网上找不到它(可能是因为我不能准确地表达我的问题:/),无论如何,我会在下面发布我的代码,如果有人能透露一些信息,我将不胜感激
**我制作的是一个隧道效果,通过线将屏幕中心与每个角落连接起来,现在我尝试模拟从屏幕中间开始向边缘移动的线(从底部开始)**
speedLines sline1, sline2, sline3, sline4;
// holds speedLines classes
ArrayList<speedLines> gameObject;
void setup() {
background(0);
size(750, 750);
smooth();
gameObject = new ArrayList<speedLines>();
sline1 = new speedLines(height/2);
sline2 = new speedLines(height/8);
sline3 = new speedLines(height/4);
sline4 = new speedLines((height/2)*3);
gameObject.add(sline1);
gameObject.add(sline2);
gameObject.add(sline3);
gameObject.add(sline4);
}
void draw() {
background(0);
for(int i=0; i< gameObject.size(); i++){
// go through the different classes
// 2 added so far
gameObject.get(i).display();
}
Guidelines();
}
//GLOBAL VARIABLES
int line=0;
int linewidth=0;
void Guidelines() {
stroke(255);
//MAIN GUIDE
line(0, 0, width/2, height/2);//top left guide
line(width, 0, width/2, height/2);//top right guide
line(0, height, width/2, height/2);//bottom left guide
line(width, height, width/2, height/2);//bottom right guide
//SUB GUIDE
stroke(60, 60, 60);
line(width/3, height, width/2, height/2);//sub guide left
line((width/3)*2, height, width/2, height/2);//sub guide right
}
class speedLines {
//Global variables
int Y;
speedLines(int y) {
}
void display() {
stroke(60, 60, 60);
line((width/2)-linewidth, (height/2)+line, (width/2)+linewidth, (height/2)+line);
line++;
linewidth++;
if ((height/2)+line >= height)
{
line=0;
linewidth=0;
}
}
}
# 1 楼答案
如果我是你的话,我会尽量把范围缩小到一个较小的草图示例。我还要尝试清理一下代码:在
ArrayList
中放置草图级别sline
变量有什么原因吗话虽如此,我会尽力帮忙的。您正在将一个参数传递到
speedLines
类(实际上应该称为SpeedLine
,因为类应该以大写字母开头,每个实例只代表一行)构造函数中,但您从未使用该参数。试着让它只使用一个实例,如下所示:请注意,我实际上是如何使用传递给
lineY
构造函数的Line
变量的。试着在你的代码中使用类似的东西。然后,使用ArrayList
来绘制多条线会更容易:还要注意的是,您在类中只使用了一个值(在我的示例中是
lineY
变量)。所以你可能真的不需要上课来做这件事。您可能只需要一个包含float
值的数组就可以实现这一点,而这些值包含lineY
值:请注意,所有这些都只是示例,您必须了解这些示例并理解它们在做什么,然后在代码中执行类似的操作。祝你好运