我有一个for循环,它循环显示一个矩形数组。对于添加到数组中的每个新矩形,都会在其上绘制一个精灵。我希望在矩形顶部绘制的每个精灵都有自己的变量来改变精灵绘图。虽然在屏幕上大多数每个矩形都应该有一个不同的精灵----------------------------------- - 我无法弄清楚如何为每个精灵赋予自己的变量,而不是给所有其他精灵提供相同的精灵。此代码最终在每个矩形上绘制新的相同sprite。这是我到目前为止所拥有的......
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);
}
}
答案 0 :(得分:0)
错误是:
arrayplace++;
您过早地增加arrayplace
,因此它指向您添加的值后面的索引。
答案 1 :(得分:-1)
随机生成器的工作方式,它们根据“种子”值生成一系列数字。给出相同的种子,系列中的第一个数字将是相同的。你正确使用你的随机功能吗?很可能你传递给随机方法的“10”的值是种子。你需要调用其他函数给你下一个随机数吗?检查随机功能文档。这是Java随机文档:http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Random.html#Random(long)请参阅构造函数和方法next()或nextInt()
的种子参数的用法更进一步,我认为每次进入循环时都需要将“种子”更改为随机生成器,而不是使用常量10。
答案 2 :(得分:-1)
我猜你得到相同随机数的原因是你在每个循环中初始化类。所以,你生成的第一个数字每次都是相同的。
尝试在for-loop之外初始化MathUtils对象 :
MathUtils m = new MathUtils();
在循环内部,使用此行生成一个数字:
PointlessRect.x = m.random(10);
希望这会起作用