Ich habe einen Algorithmus geschrieben, der die elektrischen Feldlinien von Ladungen i Raum zeichnet. Wenn mehr als eine Ladung vorhanden ist, sind die meisten Linien gekrümmt. Da Starling keine drawLine(x1,y1,x2,y2)
Art der Funktion hat.Optimierung der elektrischen Feldlinien Zeichnung Algorithmus
ich ein kleines Bild von Linie bin mit und es immer wieder auf dem Bildschirm zeichnen, eine gekrümmte Linie zu bekommen. Wenn alle Feldlinien gezeichnet sind, kann ich am Ende Tausende von kleinen Liniensegmenten auf dem Bildschirm zeichnen. Da sie die gleiche Textur haben, sollte dies kein Problem sein, aber ich bin mir nicht sicher, ob es eine gute Idee ist oder nicht.
der andere Technik Ich denke dabei ist, dass ich zum ersten Mal ein Flash-Sprite machen und alle Linien zeichnen innen dann in einem Bitmap zeichnen und eine Textur aus dieser Bitmap erstellen. Dennoch denke ich, es ist keine gute Idee, dies alle ENTER_FRAME
Ereignis zu tun.
var s:flash.display.Sprite = new flash.display.Sprite();
//drawing inside sprite goes here
var bmd:BitmapData = new BitmapData(w, h, true, 0xffffff);
bmd.draw(s);
var texture:Texture = Texture.fromBitmapData(bmd);
var img:Image = new Image(texture);
addChild(img)
Ich denke, Sie die Sprite-Draw verwenden sollte, einfach nicht die Bitmap-Daten jeden Frame neu zuzuweisen, und wenn möglich, wieder verwenden, die Textur. Eine gute Sache mit Sprites ist, dass man mit 'graphics.curveTo()' und 'graphics.cubicCurveTo()' einen Spline hineinziehen kann, nicht nur eine gerade Linie, so dass das eigentliche Zeichnen dem Prozessor etwas leichter fällt. – Vesper
@Vesper Ich kann nicht die gleiche Textur verwenden, da der Benutzer Gebühren bewegt und die Änderungen in Feldlinien in Echtzeit sehen möchte. –
Der Punkt ist, je mehr Objekte zu erstellen sind, desto langsamer wird die App sein. Wenn du die Textur nicht auffüllen kannst, sei es. – Vesper