Pracuję nad strzelanką 2D z mnóstwem poruszających się obiektów na ekranie (pociski itp.).Vsync w Flex/Flash/AS3?
Używam BitmapData.copyPixels (...) do renderowania całego ekranu do bufora: BitmapData. Następnie I "copyPixels" z "buffer" do ekranu: BitmapData. Framerate jest 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"
}
Problem polega na tym, że skrzaty są rozdzieranie: niektóre części sprite został przesunięty poziomo.
Wygląda jak gra komputerowa z wyłączonym VSYNC.
Czy ktoś rozwiązał ten problem?
UPDATE: pytanie nie chodzi o wydajność, ale o pozbycie ekran łzawienie. [!]
UPDATE: Utworzyłem another question i tutaj można spróbować zarówno implementacje: za pomocą sposobu Flash lub BitmapData + copyPixels()
Zrywanie ekranu jest związane z wydajnością. To jedyny sposób, aby naprawić łzawienie. – Kekoa
@Kekoa Nie mogę się z tym zgodzić. Wydajność nie ma nic wspólnego z odrywaniem ekranu, ponieważ używam podwójnego bufora. W przypadku słabej wydajności uzyskałbym niższy FPS, ale nie ekranowe rozdarcie. – oshyshko
inni mają rację, że to podejście nie jest zbyt odpowiednie dla flash playera ... wciąż jestem zaskoczony, to wcale nie działa ... kilka pytań: - czy próbowałeś zablokować bitmapę, którą jesteś wciągnąć? (jeśli nie, może to bardzo pomóc!) - czy korzystasz z przezroczystych bitmap? (ogólny zabójca wydajności) - dir wypróbujesz 'Stage :: invalidate' i renderujesz na' Event.RENDER' zamiast renderowania? greetz back2dos – back2dos