gpt4 book ai didi

java - 在不同时间调用类(class)时遇到问题

转载 作者:行者123 更新时间:2023-12-01 09:16:23 28 4
gpt4 key购买 nike

首先为无法准确表达我的问题表示歉意!

我面临的问题是我有一个包含 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;
}
}
}

最佳答案

如果我是你,我会尝试将其范围缩小到一个更小的示例草图。我还尝试稍微清理一下您的代码:当您将草图级 sline 变量放入 ArrayList 中时,是否有原因?

话虽如此,我会尽力提供帮助。您将一个参数传递到 speedLines 类(实际上应该称为 SpeedLine,因为类应该以大写字母开头,并且每个实例仅代表一行)构造函数,但你永远不会使用该参数。尝试让它只与一个实例一起工作,如下所示:

Line myLine;

void setup() {
size(100, 500);
myLine = new Line(height/2);
}

void draw() {
background(200);
myLine.move();
myLine.render();
}

class Line {
float lineY;

public Line(float lineY) {
this.lineY = lineY;
}

public void move() {
lineY++;
if (lineY > height) {
lineY = 0;
}
}

public void render() {
line(0, lineY, width, lineY);
}
}

请注意我实际上是如何使用传递到 Line 构造函数中的 lineY 变量的。尝试在您的代码中使用类似的东西。那么使用ArrayList来绘制多条线会更容易:

ArrayList<Line> myLines = new ArrayList<Line>();

void setup() {
size(100, 500);
for (float lineY = 0; lineY < height; lineY += 100) {
myLines.add(new Line(lineY));
}
}

void draw() {
background(200);

for (Line myLine : myLines) {
myLine.move();
myLine.render();
}
}

class Line {
float lineY;

public Line(float lineY) {
this.lineY = lineY;
}

public void move() {
lineY++;
if (lineY > height) {
lineY = 0;
}
}

public void render() {
line(0, lineY, width, lineY);
}
}

另请注意,您在类中只真正使用过单个值(在我的示例中为 lineY 变量)。所以你可能真的不需要一个类来做到这一点。您可能只需使用一个包含 lineY 值的 float 值数组即可实现此目的:

float[] lineY = new float[10];

void setup() {
size(100, 500);
for (int i = 0; i < lineY.length; i++) {
lineY[i] = i * 10;
}
}

void draw() {
background(200);

for (int i = 0; i < lineY.length; i++) {
lineY[i]++;
if (lineY[i] > height) {
lineY[i] = 0;
}
line(0, lineY[i], width, lineY[i]);
}
}

请注意,所有这些都只是示例,您必须采用这些示例并了解它们在做什么,然后在代码中执行类似的操作。祝你好运。

关于java - 在不同时间调用类(class)时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40517313/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com