java - 控制和创建多个 Sprite 数组 Java Libgdx

标签 java android libgdx sprite

我正在尝试创建一个具有 Sprite 的游戏,并且每秒都会产生另一个 Sprite ,我尝试将其用作基础:https://github.com/libgdx/libgdx/wiki/A-simple-game 然而,当新的在其中产生时,它会破坏旧的并且它们开始产生得越来越快。 这是相关代码:

自己的创建方法:

Array<Rectangle> chickens;
chickens = new Array<Rectangle>();
spawnChicken();

新的生成鸡方法:

private void spawnChicken() {


        int choice;
        choice = MathUtils.random(0, 3);
        switch (choice){

        case 0:
            chicken.x = MathUtils.random(0,1920-85);
            chicken.y = 0;          
            break;
        case 1:
            chicken.x = MathUtils.random(0,1920-85);
            chicken.y = 1080-85;    
            break;
        case 2:
            chicken.x = 0;
            chicken.y = MathUtils.random(0,1080-66);
            break;
        case 3:
            chicken.x = 1920-85;
            chicken.y = MathUtils.random(0,1080-66);
            break;
        }


    chicken.height = 66;
    chicken.width = 85;
    chickens.add(chicken);
    runningChickens ++;
    lastSpawnTime = TimeUtils.nanoTime();

渲染方法:

if(TimeUtils.nanoTime() - lastSpawnTime > 1000000000)
    spawnChicken();

Iterator<Rectangle> iter = chickens.iterator();

while(iter.hasNext()){      
    Rectangle chicken = iter.next();
    //movement

与 wiki 非常相似:

private Array<Rectangle> raindrops;
   private long lastDropTime; private void spawnRaindrop() {
      Rectangle raindrop = new Rectangle();
      raindrop.x = MathUtils.random(0, 800-64);
      raindrop.y = 480;
      raindrop.width = 64;
      raindrop.height = 64;
      raindrops.add(raindrop);
      lastDropTime = TimeUtils.nanoTime();
   }
 raindrops = new Array<Rectangle>();
   spawnRaindrop();
   if(TimeUtils.nanoTime() - lastDropTime > 1000000000) spawnRaindrop();
 Iterator<Rectangle> iter = raindrops.iterator();
   while(iter.hasNext()) {
      Rectangle raindrop = iter.next();
      raindrop.y -= 200 * Gdx.graphics.getDeltaTime();
      if(raindrop.y + 64 < 0) iter.remove();
   }

最佳答案

Rectangle chicken = new Rectangle();

spawnChicken() 方法的开头。


原因

  • 如果您保留 chicken 成员,则每次调用 spawnChicken() 方法时都会替换它。
  • 此外,每次尝试生成一只鸡时,都会将相同的对象添加到数组中。

关于java - 控制和创建多个 Sprite 数组 Java Libgdx,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24763379/

相关文章:

android - 使用 Assets 管理器的空点对象

java - 如何在 android 上执行连续检查另一个类的返回值?

android - 如何实现锁定在 Y 轴上的对象跟随鼠标位置的平滑移动?

java - Android 中的重置/清除按钮

java - mySQL嵌套循环不会执行

android - Retrofit.Builder() 中的 JacksonConverterFactory

android - 如何在 Mono for Android 中创建动态菜单?

java - 在 php 中登录到服务器端时在 android 中进行 session 处理

java - Java中的二维数组,每行增加列数

java - String.matches() 不匹配