2009-04-17 6 views
1

Mein aktueller Plan ist es, die Rechtecke durch Unterklassen von NSView zu zeichnen, aber das scheint eine sehr ineffiziente Möglichkeit für das zu sein, was ich versuche, eine Reihe fester, nicht überlappender Rechtecke zu zeichnen, die die Farben einmal ändern während. Gibt es einen besseren Weg? Vielen Dank.Was ist der beste Weg, um eine Reihe von (~ 200) farbigen Rechtecken in Cocoa zu zeichnen?

+0

Conways Spiel des Lebens, durch Zufall? – sigjuice

+0

Ihre aktuelle Lösung ist wahrscheinlich der einfachste/schnellste Weg, um so etwas Einfaches zu tun. Es ist nichts Falsches daran, NSView zu untergliedern. –

+0

Unterklasse NSView ist orthogonal zum Zeichnen der Rechtecke. Sie möchten, dass eine NSView-Unterklasse alle Rechtecke enthält - kann sie nicht sehr gut in die Luft zeichnen, oder? – Chuck

Antwort

1

Wenn sie alle dieselbe Farbe oder dasselbe Bild haben, können Sie einen einzelnen CGLayer effizienter finden. Der Zweck dieser API besteht darin, dasselbe mehrmals zu zeichnen.

Auf der anderen Seite, wenn die Rechtecke unabhängig voneinander bewegen oder verschiedene Farben oder Bilder auf ihnen haben, Core Animation ist definitiv der Weg zu gehen.

0

Core Animation wäre eine großartige Technologie für ein Spiel, aber wenn Sie vorerst bei NSView bleiben möchten, können Sie eine Klasse ähnlich NSCell erstellen, die die Gameboard-Ansicht zum Implementieren von Positionierung und Zeichnen verwendet. Dies würde auf ähnliche Weise funktionieren wie viele Cocoa-Kontrollklassen, die eine einzelne Zelle (mit unterschiedlichen Werten) verwenden, um mehrere Elemente in einer Ansicht zu zeichnen.

Bedenken Sie, dass die Verwendung einzelner NSView-Objekte sehr schnell sein kann, aber unabhängig von Geschwindigkeitsunterschieden erlaubt Ihnen diese Strategie, die Logik sinnvoll zu trennen.