【问题标题】:Why does my array keep rendering the same number for each variable?为什么我的数组总是为每个变量呈现相同的数字?
【发布时间】:2012-08-21 14:53:18
【问题描述】:

我有一个 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);
          }
  }

【问题讨论】:

  • 由于某种奇怪的原因,我在the documentation 中找不到MathUtils 类!你是怎么用的?
  • @iturki Mathutils 位于名为 libgdx 的库中
  • 您是否介意将链接放入您的问题中。
  • 是的,对不起,让我改变一下
  • 您将MathUtils 更改为Math?那是哪个班? java.lang.Math?

标签: android arrays for-loop iterator libgdx


【解决方案1】:

错误是:

arrayplace++;  

你过早地增加arrayplace,所以它指向你添加的值后面的索引。

【讨论】:

    【解决方案2】:

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

    • 尝试在for循环之外初始化MathUtils对象

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

      PointlessRect.x = m.random(10);
      

    希望这会奏效

    【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 2020-04-06
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多