2012-08-28 23 views
5

Tôi đang tạo một ứng dụng bằng cách sử dụng Box2D trong đó tôi đang nhận hình ảnh từ Thư viện tài sản và hiển thị chúng dưới dạng hình thu nhỏ.Hình ảnh không được hiển thị và hiển thị lỗi như "cocos2d: CCTexture2D: Sử dụng kết cấu RGB565 vì hình ảnh không có alpha"

đây là đoạn code mà tôi đã làm:

Bắt hình ảnh từ thư viện nội dung:

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

Tạo Texture2D:

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

Tạo sprites từ họa tiết:

CCSprite *paddle = [CCSprite spriteWithTexture:spriteTexture]; 

này mang lại cho tôi cảnh báo trong giao diện điều khiển như:

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

Vẫn trong mô phỏng nó hoạt động tốt mặc dù cảnh báo nhưng trong hình ảnh thiết bị không được hiển thị.

Nhưng thay vì nếu tôi sử dụng:

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

nó đang làm việc tốt và không đưa ra bất kỳ cảnh báo cũng có.

Bất kỳ ai có thể giúp bạn không ?? Cảm ơn trước.

+0

Tôi không nghĩ rằng "cocos2d: CCTexture2D: Sử dụng Kết cấu RGB565 vì hình ảnh không có alpha "thực sự là một cảnh báo, chỉ là một thông báo. Nó không tìm thấy bất kỳ giá trị alpha nào và chọn một định dạng màu khác sẽ vẽ nhanh hơn. Bạn có thể đã tạo hình ảnh của mình ở định dạng màu đó, chuyển sang chế độ alpha OFF trước khi lưu. – Jonny

Trả lời

3

Tôi đã giải quyết nó. Bằng cách nào đó tôi quản lý để tạo lại hình ảnh, từ đó tôi đã tạo ra 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]]; 

Và để cập nhật hình ảnh, tôi vẽ lại nó vì vậy mà tôi không nhận được bất kỳ phương pháp cập nhật alpha warnings.The là như thế này:

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

Tôi nghĩ (không thể tìm thấy tài liệu để xác nhận khó khăn) rằng hình thu nhỏ thay đổi định dạng hình ảnh để bạn nhận được một hình ảnh không có hình ảnh alpha thuần túy.

Hãy thử bằng cách sử dụng sau đây để tạo ref hình ảnh bên phải:

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

Nhưng tôi chỉ cần hình ảnh thu nhỏ, vì tôi có rất nhiều hình ảnh được hiển thị cùng một lúc và tôi không thể hiển thị chúng với độ phân giải đầy đủ. –

+0

nhưng đã làm việc? bạn có nhận được những lỗi đó về định dạng bit không? Nếu không chỉ là quy mô các sprite để kích thước mong muốn của bạn. – giorashc

+0

Không, tôi đã thử fullResolutionImage. Nhưng nó không hoạt động. Ngay cả với Scaling nó cho thấy cùng một cảnh báo cho hình ảnh không có alpha. –

Các vấn đề liên quan