/ / ¿Cómo evito que Cocos2D requiera recursos de definición estándar (imágenes SD)? - Objective-c, cocos2d-iphone

¿Cómo evito que Cocos2D requiera recursos de definición estándar (imágenes SD)? - objectivo-c, cocos2d-iphone

Estoy desarrollando un juego para iPhone con Cocos2d-iphone.

Quiero que mi juego solo esté disponible para iPhone 4 y iPad. Retina habilitada para iPhone 4. No quiero que el juego se ejecute en dispositivos más antiguos.

Cocos2d siempre me pedirá -hd y no hdarchivos Si no proporciono los archivos SD, obtengo errores. No quiero eso: ¿hay alguna forma de deshabilitar que Cocos2d intente recuperar archivos SD, y solo obtener archivos con sufijo -hd de manera predeterminada?

Ah, y cuando el juego se ejecuta en un iPad, los gráficos también serán los -hd. Entonces, el punto es que solo quiero tener archivos -hd en mi proyecto.

¿Cuáles son los pasos adecuados para editar la fuente de Cocos2d para tales?

Respuestas

3 para la respuesta № 1

Si está utilizando cocos2d versión> = 2.0, puede cambiar el valor de una variable global que se encuentra en CCFileUtils.h:

static NSString *__suffixiPad =@"-hd";

(Su valor predeterminado es @"-ipad".)

Si está utilizando la versión cocos2d <2.0, puede encontrar aquí una categoría que escribí para poder usar de forma transparente las imágenes -hd creadas para el iPhone 4 en el iPad 1/2.

En realidad, hace más que eso, pero si agregapara su proyecto, entonces las imágenes "-hd" se usarán "automáticamente" en el iPad 1/2 en lugar de sus versiones SD (que tampoco podría incluir en su proyecto).

Avíseme si tiene algún problema al integrar este código.


1 para la respuesta № 2

Si hubiera estado en tu casa ... hubiera jugado con un truco ... No votes por la respuesta si no te gusta ... Pero es solo una cosa en mi mente.

Use imágenes -hd en el código directamente. El iPhone 4 lo manejará fácilmente. Los iPhones más antiguos lo mostrarán mucho más grande y no importa, ya que no los está apoyando ... Entonces, en lugar de usar Background.png, use directamente Background-hd.png ya que funcionará bien para iPhone 4 ... En lugar de perder tiempo en todas estas cosas SD ... Usaré directamente mis imágenes -hd para mi trabajo ...

No puedo decir sobre el nuevo iPad ... Pero el viejo iPad puede usar fácilmente imágenes -hd en el código que desee ... Para el iPad lo he usado directamente en mi código anteriormente ... Espero que esto ayude.. :)


0 para la respuesta № 3

Este tutorial puede ayudar.

Si solo proporciona activos -hd, solo debeobtener errores relacionados con la falta de activos SD cuando se ejecuta en iPad. El iPad no tiene una pantalla Retina, pero ciertamente es lo suficientemente alta como para ser tratado como tal.

Como cocos2d pasa todas las solicitudes de nombre de archivo a través de Función fullPathFromRelativePath en CCFileUtils Puede ser suficiente modificar esta función para tratar el iPad como un dispositivo de alta definición y forzarlo a cargar activos HD en el iPad.


0 para la respuesta № 4

la primera idea que se me ocurre es usar el sufijo @ 2xpara imágenes (estilo UIKit) y no necesitará habilitar la visualización de retina en la aplicación. El problema es que en el ipad tendrá que escribir su propio método para eliminar el sufijo @ 2x

la segunda idea era hacer una imagen SD ... pero solo 1x1 píxeles ... prácticamente no ocupa espacio (119 bytes con píxeles blancos). Debería funcionar en el iPad como está

Tercera idea: no habilite (o habilite ... no hace ninguna diferencia) la pantalla de retina, pero tenga las imágenes HD como imágenes SD. He probado esto en cocos2d v1.0.1 y parece funcionar. debería funcionar en ipad

La cuarta idea permite forzar la visualización de la retina en ccConfig.h (para que el director no le pida las imágenes SDen ipad). No estoy seguro de esto porque hay bastantes pruebas que comprueban la resolución, el dispositivo y si es retina y tendrías que editarlos todos

estas son solo ideas fuera de mi cabeza ... pueden estar equivocadas ... pero son solo ideas