1

我有一个 for 循环,当它们出现时,它会遍历一个矩形数组。对于添加到数组中的每个新矩形,都会在其顶部绘制一个精灵。我希望在矩形顶部绘制的每个精灵都有自己的变量来改变精灵的绘制。虽然在屏幕上,大多数情况下每个矩形都应该绘制不同的精灵 ------------------------------------------------ - 我不知道如何给每个精灵自己的变量而不给所有其他精灵相同的变量。此代码最终在每个矩形上绘制新的相同精灵。这是我到目前为止所拥有的..

  int arrayplace = 0;

 for(Rectangle  rain: rectangleArray) { 

    numberArray.add(arrayPlace, MathUtils.random(3);
    //adds a variable to a certain spot on the array
    // picks random# within range given
    arrayplace++;           

          if (numberArray.get(arrayPlace)==1){
              spritebatch.draw(spriteOne, rain.x, rain.y);
          };
          if (numberArray.get(arrayPlace)==2){
              spritebatch.draw(spriteTwo, rain.x, rain.y);
          }
          if (numberArray.get(arrayPlace)==3){
              spritebatch.draw(spriteThree, rain.x, rain.y);
          }
  }
4

3 回答 3

0

错误是:

arrayplace++;  

您增加arrayplace得太早,因此它指向您添加的值后面的索引。

于 2013-12-09T23:23:53.290 回答
-1

随机生成器的工作方式是根据“种子”值生成一系列数字。给定相同的种子,该系列中的第一个数字将相同。您是否正确使用了随机函数?您传递给随机方法的“10”值很可能是种子。你需要调用其他函数来给你下一个随机数吗?检查您的随机函数文档。这是 Java 随机文档:http ://docs.oracle.com/javase/1.4.2/docs/api/java/util/Random.html#Random(long ) 参考构造函数中种子参数的用法和到方法 next() 或 nextInt()

更进一步,我认为每次进入循环时都需要将“种子”更改为随机生成器,而不是使用常数 10。

于 2012-08-27T05:34:49.653 回答
-1

我猜你得到相同随机数的原因是你在每个循环中初始化类。因此,您正在生成第一个数字,每次都相同。

  • 尝试在 for-loop 之外初始化 MathUtils 对象:

    MathUtils m = new MathUtils();
    
  • 在循环内部,使用这一行生成一个数字:

    PointlessRect.x = m.random(10);
    

希望这会奏效

于 2012-08-27T05:42:27.857 回答