Trabajo en un juego de disparos en 2D con muchos objetos en movimiento en la pantalla (balas, etc.).Vsync en Flex/Flash/AS3?
Uso BitmapData.copyPixels (...) para representar toda la pantalla en un búfer: BitmapData. Luego "copio Píxeles" desde "buffer" a la pantalla: BitmapData. La velocidad de fotogramas es 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"
}
El problema es que los sprites están destrozando: alguna parte de un sprite quedó desplazado horizontalmente.
Parece que un juego de PC con VSYNC está apagado.
¿Alguien resolvió este problema?
ACTUALIZACIÓN: la cuestión no se trata de rendimiento, pero acerca de deshacerse de pantalla desgarro. [!]
ACTUALIZACIÓN: He creado another question y aquí se puede probar ambas implementaciones: el uso de Flash manera u BitmapData + copyPixels()
El desgarro de la pantalla está relacionado con el rendimiento. Esa es la única forma de arreglar tu rasgado. – Kekoa
@Kekoa No puedo estar de acuerdo. El rendimiento no tiene nada que ver con el desgarro de la pantalla, porque uso doble buffer. En caso de bajo rendimiento, obtendría un FPS más bajo pero no un desgarro de la pantalla. – oshyshko
los otros tienen razón, que este enfoque no es muy adecuado para Flash Player ... aún así, estoy sorprendido, no funciona en absoluto ... algunas preguntas: - ¿Trataste de bloquear el bitmapData que eres entrando? (De lo contrario, esto puede ayudar mucho). ¿Está utilizando mapas de bits transparentes? (asesino de rendimiento general) - dir prueba 'Stage :: invalidate' y renderizando' Event.RENDER' en lugar de renderizar? greetz back2dos – back2dos