2017-01-05 2 views
0

Ich versuche, ein Objekt ein- und auszublenden.Lockern in Java mit Slick2D

Aber wenn ich das rendere funktioniert es gut, aber ich bekomme immer ein anderes Objekt, das sich direkt gegenüber dem anderen verhält.

Wenn also das Objekt hochfährt, wird das "Geister" -Objekt direkt nach unten zeigen. Es gibt einen ziemlich seltsamen Bildschirmreißeffekt. Ich habe versucht, vsync einzuschalten, aber das schien es noch schlimmer zu machen. Das Objekt ist ein slick2d-Rechteck. Es hat auch die Angewohnheit, für ein paar Sekunden komplett zu verschwinden oder sich sogar permanent in eine gerade Linie zu verwandeln, ohne dass ich alle seine Dimensionen ändere. Dies ist der Update-Code.

@Override 
public void update(GameContainer gc, StateBasedGame game, int delta) throws SlickException { 
    // TODO Auto-generated method stub 

    Input i=gc.getInput(); 
    d=2000/delta; 
    if(i.isKeyDown(Input.KEY_DOWN)){ 
     if(frames<d) 
     frames++; 

     if(frames==1)b=hele.getY(); 
     hele.setY(Quad.easeInOut(frames, b, 720-b-50, d));//the 50 is the size of the sprite 
     //c+=10; 
    } 
    else if(i.isKeyDown(Input.KEY_UP)){ 
     if(frames<d) 
     frames++; 

     if(frames==1)b=hele.getY(); 
     hele.setY(Quad.easeInOut(frames, b, -b, d)); 

    } 



} 

Die Leichtigkeit in outen Formeln können here auf Github zu finden.

Ich habe die Frames var zurückgesetzt, sobald der Schlüssel an anderer Stelle freigegeben wird. Ich versuche, den Sprite wie einen Hubschrauber zu verhalten. Wenn Sie eine Idee haben, wie Sie es helikopterartiger machen können, teilen Sie uns Ihr Wissen mit!

Antwort

0

Ich habe das Problem gefunden, aktualisiert d mit dem Delta jedes Update verursacht den Bildschirm reißen! Wenn man es konstant hält, wird das Problem gelöst.

Statt eine Bildzählwertes der Verwendung ich stattdessen einen Delta-Timer verwendet ...

if(elapsedtime<d) 
       elapsedtime+=delta; 

, die den Überblick über die Zeit hält mit dem Delta und für jeden Ort I-Frames verwendet, ich mit der verstrichenen Zeit ersetzt.

Allerdings habe ich immer noch die Frame-Anzahl verwendet, um das erste Update für das Delta zu identifizieren, ist nicht immer zuverlässig. https://bitbucket.org/BallisticBlaze/helirush-game/ dies jemand hilft

Hoffnung:

Die vollständige Quelle kann hier auf git finden.

+0

Selbstbeantwortung ist völlig in Ordnung, aber könnten Sie mit dem aktualisierten Code veranschaulichen, was Sie beschreiben? – Gimby

+0

Ok, ich werde das in Zukunft tun – BallisticBlaze

Verwandte Themen