2016-07-25 11 views
0

Ich möchte das Sprite nach einiger Zeit ändern, wenn das Objekt nicht sichtbar ist. Ich habe eine Methode, die ein ObjektWie ändere ich das Sprite im Timer, wenn das Objekt erstellt wird, aber keine sichtbare Kamera ist?

private void spawnRaindrop() { 
    Rectangle raindrop = new Rectangle(); 
    raindrop.x = MathUtils.random(0, Drop.WIDTH - 100); 
    raindrop.y = Drop.WIDTH; 
    raindrop.width = 100; 
    raindrop.height = 100; 
    raindrops.add(raindrop); 
    lastDropTime = TimeUtils.nanoTime(); 
} 

I have a method that changes the time interval through the sprites: 
public void timerSpriteChange() { 

    Timer timer = new Timer(); 
    timer.schedule(new Timer.Task() { 
         @Override 
         public void run() { 


           index = ((int) (Math.random() * MAX_SPRITES)); 



         } 
        } 

      , 0, 5); 

} 

ich hier überprüfen und vergleichen Sie die Zeit und rufen Sie die Methode

if (TimeUtils.nanoTime() - lastDropTime > 1000000000) { 

      spawnRaindrop(); 

     } 

OrthographicCamera Kamera erzeugt;

+0

Kamera bewegt sich um? Oder bleibt es still und alles andere bewegt sich? – munyul

+0

Ja das ist richtig, alles andere bewegt sich Ich erstelle Kamera. 800, 480 – upward

Antwort

0

Haben Sie daran gedacht, einen booleschen Wert wie 'raindropVisible' zu erstellen, wenn Sie das Objekt erstellen und es spawnen, setzt es den Booleschen Wert, wenn das Spiel darüber verfügt, wird es falsch gesetzt. Dann lassen Sie den Timer überprüfen, ob der Boolesche Wert falsch ist, und wenn ja, ändern Sie das Sprite?

0

Wenn Sie nicht bereits getan haben, sollten Sie Ihre Klasse, um die Regentropfen Libgdx Actor Klasse erweitern und dann die Methoden act und draw alles zu handhaben.

Dieser Code ist nicht getestet

class Raindrop extends Actor 
{ 
    boolean onScreen = true; 
    float offScreenTimer = 0.0f; 
    final float OFFSCREENLLIMIT = 10.0f; // change as required 

    // here you will also define all the other variables you need 
    // such as movement speed, position information, sprite/image, etc 

    public void act() 
    { 
     if (onScreen) 
     { 
      if (isOnScreen()) // you'll need to create this method yourself! 
      { 
       // do all your on screen 'acting' here (movement, etc), but not the drawing 
      } 
      else 
      { 
       onScreen = false; 
       setVisible(false); 
      } 
     } 
     else 
     { 
      offScreenTimer += Gdx.gl.getDelta(); // <= this is most likely wrong, you'll need to double check the method name 
      if (offScreenTimer > OFFSCREENLLIMIT) 
      { 
       // here add all the code you need to change the image 
       // and reset its movement and position values 
       setVisible(true); 
      } 
     } 
    } 

    public void draw() 
    { 
     // add your code to handle the drawing of the image here 
    } 
}