2012-08-28 8 views
5

Estoy haciendo una aplicación con Box2D en la que obtengo imágenes de la Biblioteca de recursos y las visualizo como sprites.Las imágenes no se muestran y muestran un error como "cocos2d: CCTexture2D: Usar textura RGB565 porque la imagen no tiene alfa"

aquí es el código que he hecho:

Obtener imágenes de la biblioteca de activos:

CGImageRef imgRef = [[mutArrAssetPhotos objectAtIndex:i] thumbnail]; 

Creación Texture2D:

CCTexture2D *spriteTexture = [[CCTexture2D alloc]initWithCGImage:imgRef resolutionType:kCCResolutionUnknown]; 

Creación de sprites de texturas:

CCSprite *paddle = [CCSprite spriteWithTexture:spriteTexture]; 

Esto me da advertencia en la consola como: no se visualizan

"cocos2d: CCTexture2D: Using RGB565 texture since image has no alpha" 

Aún en el simulador funciona bien, aunque advirtiendo pero en imágenes del dispositivo.

Pero en cambio si he utilizado:

CCSprite *paddle = [CCSprite spriteWithFile:@"img.png"]; 

que está funcionando bien y no da ninguna advertencia también.

¿Alguien puede ayudar, por favor? Gracias por adelantado.

+0

no creo "cocos2d: CCTexture2D: Usando La textura RGB565 ya que la imagen no tiene alfa "es realmente una advertencia, solo un aviso. No encontró ningún valor alfa y elige otro formato de color que será más rápido de dibujar. Podría haber creado sus imágenes en ese formato de color, desactivando el alfa antes de guardar. – Jonny

Respuesta

3

he resolvió. De alguna manera logré recrear la imagen, de la cual estaba creando sprite.

CGImageRef imgRef = [[mutArrAssetPhotos objectAtIndex:i] thumbnail]; 
     UIImage *image = [self updateImage:[UIImage imageWithCGImage:imgRef]]; 
     imgRef = image.CGImage; 

     CCSprite *paddle = [CCSprite spriteWithCGImage:image.CGImage key:[NSString stringWithFormat:@"%d",i]]; 

Y para actualizar la imagen, i vuelve a dibujar de manera que no consigo ningún método de actualización alfa warnings.The es así:

-(UIImage *) updateImage:(UIImage *)image 
{ 
    UIImageView *imgView = [[UIImageView alloc] initWithImage:image]; 
    imgView.frame = CGRectMake(0,50, image.size.width,image.size.height); 

    image = [self captureImageFrom:imgView]; 

    [imgView release]; 
    return image; 
} 

-(UIImage *) captureImageFrom:(UIImageView *)view{ 

    UIGraphicsBeginImageContext(view.frame.size); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    [view.layer renderInContext:context]; 
    UIImage *screenShot = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return screenShot; 
} 
0

Creo (no pude encontrar documentos para confirmar difícil) que la miniatura cambia el formato de la imagen para que pueda obtener una ref.

intente utilizar el siguiente para crear la imagen de la derecha ref:

CGImageRef imgRef = [[[mutArrAssetPhotos objectAtIndex:i] defaultRepresentation] fullResolutionImage]; 
+0

Pero solo necesito imágenes en miniatura, porque tengo muchas imágenes para mostrar a la vez y no puedo mostrarlas con resolución completa. –

+0

pero ¿funcionó? ¿Recibió esos errores sobre el formato de los bits? Si no es así, simplemente escala el sprite al tamaño deseado. – giorashc

+0

No, probé fullResolutionImage. Pero no funcionó. Incluso con Scaling, muestra la misma advertencia para la imagen que no tiene alfa. –

Cuestiones relacionadas