2012-08-28 4 views
5

Sto creando un'applicazione utilizzando Box2D in cui sto ottenendo immagini dalla Raccolta di asset e visualizzandole come sprite.Le immagini non vengono visualizzate e mostrano errori come "cocos2d: CCTexture2D: Utilizzo di texture RGB565 poiché l'immagine non ha alfa"

Ecco il codice che ho fatto:

Portare le immagini dalla libreria di asset:

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

Creazione Texture2D:

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

Creazione di sprite da trame:

CCSprite *paddle = [CCSprite spriteWithTexture:spriteTexture]; 

Questo mi dà avvertimento in console come:

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

Sempre nel simulatore funziona benissimo anche se di avvertimento, ma nelle immagini dei dispositivi non vengono visualizzati.

Ma invece, se ho usato:

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

si sta lavorando bene e non sta dando alcun avvertimento anche.

Qualcuno può aiutare per favore ?? Grazie in anticipo.

+0

Non credo "cocos2d: CCTexture2D: Utilizzo La trama RGB565 poiché l'immagine non ha alfa "è in realtà un avvertimento, solo un avviso. Non ha trovato alcun valore alfa e sceglie un altro formato di colore che sarà più veloce da disegnare. Potresti aver creato le tue immagini in quel formato colore, spegnendo alpha OFF prima di salvare. – Jonny

risposta

3

l'ho risolto. In qualche modo sono riuscito a ricreare l'immagine, dalla quale stavo 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]]; 

E per aggiornare l'immagine, ho ridisegnare in modo che non ho ricevuto alcun metodo di aggiornamento alpha warnings.The è come questo:

-(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

Penso che (non è stato possibile trovare documenti per confermare difficile) che la miniatura cambi il formato dell'immagine in modo da ottenere un semplice riferimento di immagine alpha no.

provare a utilizzare il seguente per creare la giusta immagine ref:

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

Ma ho bisogno solo delle immagini in miniatura, perché ho molte immagini da visualizzare alla volta e non posso visualizzarle a piena risoluzione. –

+0

ma ha funzionato? hai avuto quegli errori sul formato dei bit? Se non solo ridimensiona lo sprite alla tua misura desiderata. – giorashc

+0

No, ho provato fullResolutionImage. Ma non ha funzionato. Anche con Ridimensionamento sta mostrando lo stesso avviso per l'immagine non ha alfa. –

Problemi correlati