Ich arbeite an einem 2D-Shooter-Spiel mit vielen beweglichen Objekten auf dem Bildschirm (Kugeln usw.).Vsync in Flex/Flash/AS3?
Ich benutze BitmapData.copyPixels (...), um den gesamten Bildschirm in einen Puffer zu rendern: BitmapData. Dann "copyPixels" von "buffer" auf den Bildschirm: BitmapData. Die Framerate ist 60.
private var bitmap:Bitmap = new Bitmap();
private var buffer:Bitmap = new Bitmap();
private function start():void {
addChild(bitmap);
}
private function onEnterFrame():void {
// render into "buffer"
// copy "buffer" -> "bitmap"
}
Das Problem ist, dass die Sprites zerreißt: ein Teil eines Sprites wurde horizontal verschoben.
Es sieht aus wie ein PC-Spiel mit VSYNC ausgeschaltet.
Hat jemand dieses Problem gelöst?
UPDATE: die Frage nicht über die Leistung, sondern um loszuwerden Bildschirm reißen. [!]
UPDATE: Ich habe another question erstellt und hier können Sie beide Implementierungen versuchen: mit Flash Art und Weise oder BitmapData- + copypixels()
Das Aufreißen des Bildschirms hängt von der Leistung ab. Nur so kannst du dein Reißen beheben. – Kekoa
@Kekoa Ich kann dem nicht zustimmen. Leistung hat nichts mit Bildschirmreißen zu tun, weil ich Doppelpuffer verwende. Bei schlechter Leistung würde ich einen niedrigeren FPS, aber keinen Bildschirmriss bekommen. – oshyshko
die anderen sind richtig, dass dieser Ansatz ist nicht sehr geeignet für Flash-Player ... immer noch, ich bin erstaunt, es funktioniert überhaupt nicht ... ein paar Fragen: - Haben Sie versucht, die BitmapData sperren Sie sind einzeichnen? (Wenn nicht, kann das viel helfen!) - Verwenden Sie transparente Bitmaps? (general performance killer) - Versuch du 'Stage :: invalidate' und Rendering auf' Event.RENDER' statt Rendering? greetz back2dos – back2dos