libgdx在不同的地方创建多个对象

时间:2014-10-25 18:52:47

标签: java object random libgdx spawning

我想在随机位置生成我的项目(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();
    }
}

1 个答案:

答案 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();
        }

    }

}