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

处理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。前一页和下一页在屏幕中显示深度,并用深度动画滑动下一页。 你可以看看这个图像 我怎么做?

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

  • 我已经在活动中创建了处理程序。这个Hanlder负责在10秒后拍摄屏幕截图。在运行方法中,我使用了虽然(标志==true)和屏幕捕获util标志==false,但这卡住了我的活动。我不能工作。它把屏幕拍摄一遍又一遍的相同的图像,因为动作被卡住了。我如何可以工作与我的屏幕和我正在做的处理程序采取屏幕截图后10秒?而循环卡住了我的应用程序。 它可以拍照,但我无法进行我的活动。