2011-11-11 27 views
6

Tôi không biết nếu điều này là ngu ngốc hay không nhưng tôi đã gãi đầu của tôi trong này khoảng một hoặc hai giờ ngay bây giờ.Thêm UIImage vào CCSprite?

Tôi nhận được đối tượng NSData từ NSUserDefaults sau đó chuyển đổi thành UIImage. Bây giờ làm cách nào để đặt hình ảnh của CCSprite thành UIImage của tôi?

spriteWithFile không hoạt động ở đây vì yêu cầu NSString. Tôi đang tìm một API có thông số là UIImage. Điều này có thể không?

Bất kỳ ý tưởng nào?

Chỉnh sửa1: Làm thế nào đây?

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

Trả lời

10

Hãy thử điều này một:

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

UIImage là một đối tượng UIImage.

+0

tôi phải sử dụng CCSprite:/Và trong ví dụ đầu tiên bạn đang làm nó theo cách thông thường của việc sử dụng một NSString. Tôi cần phải vượt qua một UIImage thay vì một NSString! –

+0

Mã đã chỉnh sửa của tôi ở trên, vui lòng kiểm tra điều đó. – banu

+1

initWithImage không được dùng nữa. Bạn có nhớ rằng việc sử dụng API mới hơn được cho là sử dụng không? Và bên cạnh hình ảnh, sự xuất hiện vật lý của sprite không khác gì vì tôi sử dụng CCTexture2D phải không? –

1

Phương pháp này đang làm việc một cách hoàn hảo đối với tôi ...

-(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]; 
    } 
Các vấn đề liên quan