当前位置: 首页 > 知识库问答 >
问题:

处理2.1.1-屏幕上一次出现多个项目?

邹野
2023-03-14

我对编程相对较新,我试图创建一个程序,创建一个紫色的球,我点击它向右移动,直到它离开屏幕,在那里我可以一次在屏幕上有无限个球。我已经做了一个程序来做这个,但我只能有一个在屏幕上一次,如果我点击第二次,第一个球消失,被一个新的球取代。哦,当我点击第二次时,球不是从光标所在的地方开始的,而是从最后一个球在x轴上的地方开始的。救命啊!

代码如下:

int moveX, moveY;

void setup() {
  background(255);
  moveY = 200;
  moveX = 0;
  size(500,400);
}

void mouseClicked() {
moveY = mouseY;
  moveX++;

}

void draw() {
  if (moveX >= 1){
    background(255);
    fill(255, 0, 255);
    ellipse(moveX, moveY, 40, 40);
    moveX++;
    }
}

共有1个答案

姜胤
2023-03-14

正如donfuxx所建议的,给每个球自己的坐标。一种方法是使用数组存储多个值(坐标)。

为此,您需要熟悉for循环和数组。它们一开始看起来很可怕,但一旦你掌握了它们的诀窍,它们就很容易了。只要您能想到需要重复的情况,您就可以使用for循环来使您的生活更加轻松。

For循环具有以下语法:

for keyword (3 elements: a start point,an end point(condition) and an increment,(separated by the ; character)
for(int currentPos = 0 ; currentPos < 10; currentPos++){
  println("step: " + currentPos);
}
for(int currentPos = 0 ; currentPos < 10; currentPos+=2){
  println("step: " + currentPos);
}
for(int currentPos = 10 ; currentPos > 0; currentPos--){
  println("step: " + currentPos);
}

这在遍历所有类型的数据(场景中球的坐标等)时非常有用

你如何组织你的数据?您将其放置在列表或数组中。数组包含相同类型的元素并具有设置的长度。声明数组的语法如下所示:

ObjectType[] nameOfArray;

您可以初始化一个空数组:

int[] fiveNumbers = new int[5];//new keyword then the data type and length in sq.brackets
String[] words = {"ini","mini","miny","moe"};
background(255);
String[] words = {"ini","mini","miny","moe"};
for(int i = 0 ; i < words.length; i++){
   fill(map(i,0,words.length, 0,255));
   text(words[i],10,10*(i+1));
}
int ballSize = 40;
int maxBalls = 100;//maximum number of balls on screen
int screenBalls = 0;//number of balls to update
int[] ballsX = new int[maxBalls];//initialize an empty list/array of x coordinates
int[] ballsY = new int[maxBalls];//...and y coordinates
void setup() {
  size(500, 400);
  fill(255, 0, 255);
}
void mouseClicked() {
  if (screenBalls < maxBalls) {//if still have room in our arrays for new ball coordinates
    ballsX[screenBalls] = mouseX;//add the current mouse coordinates(x,y)
    ballsY[screenBalls] = mouseY;//to the coordinate arrays at the current ball index
    screenBalls++;//increment the ball index
  }
}

void draw() {
  println(screenBalls);
  background(255);
  for (int i = 0 ; i < screenBalls; i++) {//start counting from 0 to how many balls are on screen
    ballsX[i]++;//increment the x of each ball
    if(ballsX[i]-ballSize/2 > width) ballsX[i] = -ballSize/2;//if a ball goes off screen on the right, place it back on screen on the left
    ellipse(ballsX[i], ballsY[i], ballSize, ballSize);//display each ball
  }
}
 类似资料:
  • 我们使用Spring Batch进行一些处理,通过Reader读取一些ID,我们希望通过处理器将它们处理为“块”,然后写入多个文件。但是处理器接口一次只允许处理一个项目,我们需要进行批量处理,因为处理器依赖于第三方,不能为每个项目调用服务。 我看到我们可以为“块”中涉及的所有读取器-处理器-写入器创建包装器,以处理列表<>并委托给一些具体的读取器/处理器/写入器。但这对我来说并不是件好事。像这样:

  • 我在写一个程序,允许用户通过菜单选项画出不同的形状,画出后的形状需要在同一屏幕上,但问题是在菜单中选择另一个选项画出另一个形状后,前一个形状就消失了。我该怎么解决这个?这是我的程序: 仅在中。

  • 我尝试了很多在Android上处理多个平板电脑和手机屏幕的方法,但没有找到正确的方法。在某些情况下,我得到错误,有些不工作。我也贴了堆栈问题,但没有收到满意的结果。我想在平板电脑屏幕上同时显示列表和描述,而在移动屏幕上只显示列表。有什么好的和简单的方法来做这件事吗?我也试过这样做,但没能取得进球。

  • 我想在屏幕中的页面预览之前显示viewpager。前一页和下一页在屏幕中显示深度,并用深度动画滑动下一页。 你可以看看这个图像 我怎么做?

  • 问题内容: 如何从一个活动屏幕导航到另一个活动屏幕?在第一个屏幕中,我有一个按钮,如果我单击该按钮,则必须移至另一个“活动”屏幕。 问题答案:

  • 多亏了我在这个论坛上解决其他问题的帮助,我成功地推进了我的项目,但另一个障碍出现在我的道路上。 我有麻烦在libgdx java实现多个屏幕。我想知道如何实现多个屏幕(一个用于主菜单,一个用于播放,一个用于加载屏幕,...)。 关于我应该如何构造我的屏幕类的一个例子或一些解释将非常有帮助。我试着实现我自己的屏幕管理器,但不太顺利...还有一些关于我应该如何处理屏幕的提示,因为每次从主菜单到播放或选