2 Stimmen

fillRect, Leistung?

Ich schreibe meine erste Flash-AS3-Spiel-Engine und es gibt einen Funktionsaufruf, der mich über die Leistung besorgt gemacht hat.

In jedem Frame fülle ich meine "Render-Bitmap" mit schwarzer Farbe mit der fillRect-Funktion, bevor ich die anderen Sprites darauf rendere.

Und dann nur zum Spaß habe ich die fillRect Funktion übersprungen, nur um zu sehen, wie viel Leistung ich gewinnen würde, und ohne fillRect aufzurufen, ist mein Alcon FPS Zähler bei 112fps maximiert und wenn ich es aufrufe, erhalte ich rund 90 mit einigen Text und Sprites.

Meine Frage ist also, ob es eine Möglichkeit gibt, den Bildschirm mit einer Farbe zu füllen, zu optimieren oder schneller zu machen.

Zum Wohl!

1voto

Kevin Punkte 31

Ich bin ziemlich sicher, fillRect ist der schnellste Weg, um ein BitmapData-Objekt zurückzusetzen. Ich bin nicht sicher, wie der alcon fps-Zähler funktioniert, aber fill rect sollte weniger als eine Millisekunde dauern, es sei denn, Ihre Bitmap ist riesig oder Ihr System ist alt.

(Ich nehme an, Sie tun eine Art von Bitmap-Blitting, die ist, warum Sie die Bitmap jedes Bild wischen müssen?)

0voto

rfunduk Punkte 29395

Gibt es einen Grund, warum Sie nicht einfach ein dauerhaftes schwarzes Objekt hinter Ihre Leinwand (oder was auch immer Sie darauf zeichnen) legen können und dann this.graphics.clear() bevor Sie Ihr Sprite zeichnen?

Das würde ich vorschlagen. Lassen Sie die Komponente mit den Sprites, die darauf gezeichnet werden, transparent sein und setzen Sie sie einfach jedes Mal zurück.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X