2017-04-14 7 views
0

Wie der Titel sagt, wie setzt man eine feste Bildrate von 25 fps für PixiJS?PixiJS - Einstellen einer festen Bildrate

Hier ist mein Setup:

g_App = new PIXI.Application(800, 600, { backgroundColor: 0x1099bb }); 
document.getElementById("canvas-div").appendChild(g_App.view); 

Ich will nicht als keine Frames mehr tun.

Antwort

0

Nach @ wavemodes Kommentare über PixiJS mit requestAnimationFrame Ich denke, ich muss das folgende tun. (Hinweis: Wenn es eine bessere Lösung gibt, posten Sie sie bitte, andernfalls werde ich dies als die Antwort markieren.)

Stoppen Sie im Grunde jede Animation, wenn wir die Bildrate überschreiten.

var g_TICK = 40; // 1000/40 = 25 frames per second 
var g_Time = 0; 

Dann später, wenn wir die Animation ein:

// Listen for animate update 
g_App.ticker.add(function (delta) { 
    // Limit to the frame rate 
    var timeNow = (new Date()).getTime(); 
    var timeDiff = timeNow - g_Time; 
    if (timeDiff < g_TICK) 
     return; 

    // We are now meeting the frame rate, so reset the last time the animation is done 
    g_Time = timeNow; 

    // Now do the animation 

    // rotate the container! 
    // use delta to create frame-independent tranform 
    container.rotation -= 0.01 * delta; 
    g_Bunny0.x += 1; 
}); 
0

25 FPS sind 40 Millisekunden pro Frame. Also, jeder Frame, sollten Sie

setTimeout (myRenderFunction, 40)

aufrufen, wenn Sie auf dem Bildschirm wollen 25-mal pro Sekunde aktualisieren.

+0

Dies nutzt nicht den normalen 'g_App.ticker.add (function (delta) {/ * Meine Animation hier * /}) "Weg der Dinge. Was setze ich in myRenderFunction ein, um die Leinwand in der PixiJS-Umgebung zu malen? – Rewind

+0

@Rewind 'myRenderFunction' sollte alles in deiner Spielschleife enthalten. Der Pixi.JS Ticker verwendet 'requestAnimationFrame', der immer mit der Aktualisierungsrate Ihres Monitors läuft (wahrscheinlich 60 fps). Wenn Sie 25 wollen, müssen Sie mit "setTimeout" oder "setInterval" manuell mit 25 fps zeichnen. – wavemode

+0

Was rufe ich in myRenderFunction auf, um die PixiJS-Szene tatsächlich zu zeichnen? Wie verhindere ich, dass PixiJS automatisch sein eigenes Ding macht und die Szene außerhalb von setTimeout zeichnet? – Rewind