2012-08-28 7 views
5

Składam wniosek za pomocą Box2D, w którym otrzymuję obrazy z Biblioteki zasobów i wyświetlam je jako sprite.Obrazy nie są wyświetlane i wyświetlają błąd typu "cocos2d: CCTexture2D: Używanie tekstury RGB565, ponieważ obraz nie ma znaku"

Oto kod, który mam zrobić:

Pobieranie obrazów z biblioteki zasobów:

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

Tworzenie Texture2D:

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

Tworzenie ikonek z teksturami:

CCSprite *paddle = [CCSprite spriteWithTexture:spriteTexture]; 

To daje mi ostrzeżenie w konsoli jak:

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

Jeszcze w symulatorze działa dobrze choć ostrzeżenie, ale w obrazach urządzeniu nie są wyświetlane.

Ale zamiast jeśli użyłem:

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

to działa dobrze i nie daje żadnego ostrzeżenia również.

Czy ktoś może pomóc? Z góry dziękuję.

+0

Nie sądzę „Cocos2d: CCTexture2D: Używanie Tekstury RGB565, ponieważ obraz nie ma alfa "jest naprawdę ostrzeżeniem, tylko zawiadomieniem. Nie znaleziono żadnych wartości alfa i wybiera inny format kolorów, który będzie szybszy do narysowania. Mogłeś stworzyć swoje obrazy w tym formacie kolorowym, wyłączając alfa przed zapisaniem. – Jonny

Odpowiedz

3

mam rozwiązać go. Jakoś udało mi się odtworzyć obraz, z którego stworzyłem duszek.

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]]; 

I do aktualizacji obrazu, i przerysować go tak, że ja nie rozumiem każda metoda aktualizacji alfa warnings.The jest tak:

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

Sądzę, że (nie udało się znaleźć dokumentów potwierdzających, że są mocne), że miniatura zmienia format obrazu, tak aby uzyskać zwykły obraz ref.

Spróbuj użyć następujących do tworzenia obrazu w prawo ref:

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

Ale potrzebuję tylko miniatur zdjęć, ponieważ mam dużo obrazów do wyświetlenia w tym samym czasie i nie mogę wyświetlić ich z pełną rozdzielczością. –

+0

ale czy to działa? czy dostałeś te błędy na temat formatu bitów? Jeśli nie tylko przeskaluj duszek do pożądanego rozmiaru. – giorashc

+0

Nie, próbowałem fullResolutionImage. Ale to nie zadziałało. Nawet przy skalowaniu pokazuje to samo ostrzeżenie, ponieważ obraz nie ma alfa. –

Powiązane problemy