2012-06-09 20 views
21

Cocos2d-iphone verwendet die Erweiterung -hd für Retina-Bilder (und andere Assets). Die cocos2d Retina guide spricht nur vage von „einige Inkompatibilitäten“ in Bezug auf @ 2x:Warum sollten Nutzer von cocos2d-iphone die Dateiendung @ 2x vermeiden?

Apple verwendet den „@ 2x“ Suffix, aber cocos2d verwendet nicht, dass die Erweiterung wegen einiger Inkompatibilitäten. Stattdessen hat cocos2d sein eigenes Suffix: "-hd".

WARNUNG: Es wird NICHT empfohlen, das Suffix "@ 2x" zu verwenden. Apple behandelt diese Bilder in einer speziellen Weise, die Fehler in Ihrer cocos2d Anwendung verursachen können.

Großartig. Ich fühle mich gut informiert.

Durch eine 2-year old bug report regarding @2x bekam ich den Link zu einem forum thread that supposedly explains the issues with @2x. Allerdings nicht. Die einzigen Hinweise, die ich dort gefunden habe, sind iOS (4.0/4.1) Bugs bezüglich @ 2x, die ich für nicht mehr relevant halte. Es ist möglich, dass ich einige wichtige Aspekte übersehen habe (es gab einige Diskussionen über Caching oder wiederholte Ladeprobleme) - der Thread ist sehr lang.

Ich würde gerne wissen, welche spezifischen Probleme ein cocos2d-Entwickler begegnen könnte, wenn (s) er das @ 2x-Suffix für Bilder anstelle von -hd verwendet?

Bitte geben Sie konkrete Beispiele von Dingen, die gehen könnten oder tatsächlich falsch sein werden.

Antwort

7

Dies scheint der Hauptgrund von diesem Link zu sein: http://www.cocos2d-iphone.org/forum/topic/12026

Insbesondere dieser Beitrag von riq:

Ich weiß nicht, ob initWithContentsOfFile fixiert wurde, aber in 4.0 wurde es gebrochen und es funktionierte nicht mit @ 2x, ~ iPhone Erweiterungen. imageNamed speichert alle geladenen Dateien im Cache, so dass es viel mehr Speicher verbraucht als initWithContentsOfFile Auch die @ 2x Erweiterung tut etwas (ich weiß nicht genau was) aber es funktioniert nicht OK mit cocos2d.

Ein weiterer guter Punkt: Damals, als das iPhone 4 wurde nur mit dem Retina-Display freigegeben, ich bin sicher, dass einige Nutzer von Cocos2D eine ältere Version davon wurden unter Verwendung so, wenn der Benutzer auf einer Version des Retina-Display wurde mit der Cocos2D hat das nicht unterstützt, die Dinge waren doppelt so groß wie sie hätten sein sollen. Auch dies ist jetzt für die meisten behoben, es sei denn, Sie verwenden eine sehr frühe Version von Cocos2D.

Überblick, so scheint es, dass das Hauptproblem mit initWithContentsOfFile von iOS 4 war, aber sie haben dies behoben, da ich genau diese API mit Cocos2D 2.0-rc2 in meiner App verwende und ich habe keinerlei Probleme. Ich benutze alle von Apple angegebenen Erweiterungen für Bilder und alles funktioniert gut! :)

+0

Danke, endlich eine Klarstellung! Obwohl "ok mit cocos2d nicht funktioniert" scheint mir das noch ein wenig vage zu sein. Aber das ist wahrscheinlich nur ich. :) – LearnCocos2D

+0

Ist meine Antwort würdig genug von der Prämie? : P Ich schwöre, das ist die ganze Information, die es zu diesem Thema gibt! –

7

Es scheint, als ob dies einen historischen Hintergrund hat.

Die Verwendung von -hd-Grafiken lohnt sich immer noch, weil das Laden nicht von der Apple-Funktionalität abhängt, sondern im Framework-Code erfolgt. So kann -hd für iPads im iPhone Simulator-Modus geladen werden und die Bilder mit höherer Auflösung im 2x-Modus verwendet werden.

Ansonsten konnte ich keine weiteren Gründe finden, @ 2x nicht zu verwenden, als ich dies vor einer Woche noch einmal angeschaut habe.

Falls Sie alle Details wünschen, ist es wahrscheinlich am besten, eine Email an Riq zu senden.