2016-06-23 5 views
0

Ich versuche, eine Funktion zu erstellen, die Fadein und Fadeout machen.Überblenden ausblenden mit libgdx, sin und java

Ich beginne mit Math.sin() und batch.setColor(), um die Bilder zu schwarz verblassen, weiß ich nicht, dass dies der beste Ansatz ist, aber meine Idee läuft eine Sünde-Funktion.

Ich weiß, dass mit der Sünde Funktion, die ich meine FadeIn/fideout Zeit steuern kann, aber ich habe zwei große Probleme:

  1. ich anfangen müssen, wenn senofloat == 0 Zählen und aufhören, wenn seine 1 oder auf 1 starten und stoppen auf 0 für fadeout,
  2. I in 1mal steuern müssen die Zyklen wiederholt, Beispiel 1 Zeit für verblassen die Anzahl von Malen für Ausblendung

tempo ist eine globale Variable und

tempo = Gdx.graphics.getDeltaTime(); 

Das ist, was ich habe auf die Funktion machen:

float periudo=2; 
float escala = 1; 

senofloat = (float) (Math.sin(tempo*2*Math.PI/periudo)*(escala/2) + (escala/2)); 
batch.setColor(1, 1, 1, senofloat); 

tempo++; 

Bin ich dies zu viel zu komplizieren? Gibt es einen einfacheren Ansatz? Sie können dies tun, mit Scene2D Aktionen

Antwort

0

beste Option und einfacher Ansatz wäre universal-tween-engine

sehr einfach zu bedienen und effektiv, wie es von Aurelien Ribon verwendet

+0

Fix den Link bitte. – Madmenyo

+0

Entschuldigung, überprüfen Sie jetzt. :-) –

+0

Ich benutze jetzt Tween-Engine, nachdem ich ein Youtube-Tutorial gesehen habe, ist es ein bisschen triky, um die Bibliothek zum Eclipse-Projekt hinzuzufügen, aber es funktioniert und es scheint eine Menge Potenzial zu haben. danke alle – Mateus

1

kommt.

private Actor actionManager = new Actor(); //use a Stage instead if using one anyway 
private final Color fadeColor = new Color(); 
private static final Color FADED = new Color(1,1,1,0); 

private void fadeOut (float duration){ 
    ColorAction colorAction = Actions.color(FADED, duration, Interpolation.sine); 
    colorAction.setColor(fadeColor); 
    actionManager.addAction(colorAction); 
} 

private void fadeIn (float duration){ 
    ColorAction colorAction = Actions.color(Color.WHITE, duration, Interpolation.sine); 
    colorAction.setColor(fadeColor); 
    actionManager.addAction(colorAction); 
} 

public void render(){ 
    //... 

    actionManager.act(Gdx.graphics.getDeltaTime()); 
    batch.setColor(fadeColor); 
    //... 
} 

Anruf fadeOut oder fadeIn eine Einblendung zu starten. Sie können den Interpolationstyp auf Interpolation.fade ändern, wenn Sie möchten. Ich denke, es sieht besser als Sinus für ein Farbverblassen aus.