2011-11-11 15 views
6

Nie wiem, czy to jest głupie, czy nie, ale teraz drapałem się nad tym przez około godzinę lub dwie.Dodaj UIImage do CCSprite?

Otrzymuję obiekt NSData od NSUserDefaults, a następnie konwertuję go na UIImage. Jak mogę teraz ustawić obraz mojej kamery CCSprite na moją UIImage?

spriteWithFile nie działa tutaj, ponieważ wymaga NSString. Szukam API o parametrze UIImage. czy to możliwe?

Wszelkie pomysły?

Edit1: Jak to jest?

UIImage *image = [UIImage imageWithData:(NSData*)obj]; 
sprite = [CCSprite spriteWithCGImage:image.CGImage key:@"mainSprite"]; 

Odpowiedz

10

Spróbuj tego:

CCTexture2D *tex = [[[CCTexture2D alloc] initWithImage:uiImage] autorelease]; 
CCSprite *sprite = [CCSprite spriteWithTexture:tex]; 

UIImage jest obiektem UIImage.

+0

muszę używać CCSprite:/I w pierwszym przykładzie robisz to normalny sposób przy użyciu NSString. Muszę przekazać UIImage zamiast NSString! –

+0

Mój edytowany kod jest powyżej, sprawdź to. – banu

+1

initWithImage jest przestarzałe. Czy miałbyś ochotę pokazać użycie nowszego API? A poza tym obrazem fizyczny wygląd sprite'a nie jest inny, ponieważ używam CCTexture2D, prawda? –

1

Metoda ta doskonale pracuje dla mnie ...

-(CCSprite*)spriteFromDiskFileName:(NSString*)fileName 
    { 
     NSArray *paths = NSSearchPathForDirectoriesInDomains(NSApplicationSupportDirectory, NSUserDomainMask, YES); 
     NSString *directoryPath = [paths objectAtIndex:0] ; 
     NSData *imageData = [[NSData alloc]initWithContentsOfFile:[directoryPath stringByAppendingPathComponent:fileName]]; 

     UIImage *spriteImage = [UIImage imageWithData:imageData]; 

     if (spriteImage) { 
      printf("\nUIImage created from disk image \n"); 
     } 
     else 
     { 
      printf("\nUIImage creation failed from disk image \n"); 
     } 

     CCTexture2D *texture = [[CCTexture2D alloc] initWithCGImage:spriteImage.CGImage resolutionType:kCCResolutionUnknown]; 
     return [CCSprite spriteWithTexture:texture]; 
    }