我想在随机位置生成我的项目(Sword1)。当我产生它时,首先它只创建其中一个,然后它随机移动到处。我应该为对象创建和数组吗?怎么样?
public class Sword1 {
public static TextureRegion sprite;
public static int x;
public static int y;
public static int size;
public static boolean created;
public Sword1(){
created=true;
Random r = new Random();
x = (r.nextInt(5)+1)*GameRender.tilesize;
y = (r.nextInt(5)+1)*GameRender.tilesize;
size = GameRender.tilesize;
sprite = AssetLoader.s1;
createMe();
}
public static void createMe() {
GameRender.batch.draw(sprite, x, y, size, size);
}
}
我批量渲染:
while(number<4){
number++;
Items.createSwords();
}
我还尝试使用Items类,当有更多
时,它会保存所有项目public class Items {
public Items(){}
public static void createSwords() {
Object sword = (Sword1) new Sword1();
}
}
答案 0 :(得分:0)
您可以清理并重命名Sword1类[我也将静态变量更改为私有],否则它们将在各种类实例中共享,请参阅:Static Variables — What Are They ?.
public class Sword {
private TextureRegion sprite;
private int x;
private int y;
private int size;
public Sword() {
Random r = new Random();
x = (r.nextInt(5)+1)*GameRender.tilesize;
y = (r.nextInt(5)+1)*GameRender.tilesize;
size = GameRender.tilesize;
sprite = AssetLoader.s1;
}
public void createMe() {
GameRender.batch.draw(sprite, x, y, size, size);
}
}
然后你可以使用多个剑和一个剑的ArrayList,使用在评论中给出的剑对象 GameRender 的类:
private List<Sword> swords = new ArrayList<Sword>();
有关Array的更多信息,请参阅Oracle documentation
现在你将拥有一个剑对象列表。此列表将用于存储新创建的Sword对象并在以后呈现它们。
制作剑
//create 10 swords
for (int i = 0; i<10 ; i++ ) {
swords.add(new Sword());
}
渲染剑,在每个对象中调用create方法
for (Sword sword : swords) {
sword.createMe();
}
例如 GameRender类
中的最小示例public class GameRender() {
private List<Sword> swords = new ArrayList<Sword>();
public GameRender(){
// create the swords
for (int i = 0; i<10 ; i++ ) {
swords.add(new Sword());
}
// render the swords
public void render() {
for (Sword sword : swords) {
sword.createMe();
}
}
}