Ios 我应该用什么替换CCTexture2D initWithImage?
我应该用什么替换CCTexture2D initWithImage 我有这个方法:Ios 我应该用什么替换CCTexture2D initWithImage?,ios,cocos2d-iphone,Ios,Cocos2d Iphone,我应该用什么替换CCTexture2D initWithImage 我有这个方法: CCTexture2D *noMutableTexture = [[[CCTexture2D alloc] initWithImage:[UIImage imageNamed:@"myImage.png"]] autorelease]; 我跳转到定义,发现现在唯一的方法是: - (id) initWithData:(const void*)data pixelFormat:(CCTexture2DPixelFo
CCTexture2D *noMutableTexture = [[[CCTexture2D alloc] initWithImage:[UIImage imageNamed:@"myImage.png"]] autorelease];
我跳转到定义,发现现在唯一的方法是:
- (id) initWithData:(const void*)data pixelFormat:(CCTexture2DPixelFormat)pixelFormat pixelsWide:(NSUInteger)width pixelsHigh:(NSUInteger)height contentSize:(CGSize)size
及
我猜是后者,但我不确定如何构建CGImageRef,也不知道ccResolutionType是什么
任何帮助都将不胜感激。Thx将纹理添加到纹理缓存时,该方法将返回纹理。从CCE的文档中:
-(CCTexture2D*) addImage: (NSString*) fileimage:
因此,在你的情况下:
CCTexture2D *noMutableTexture = [[CCTextureCache sharedTextureCache] addImage:@"myImage.png"];
是resolutionType的可能值
所以根据设备类型,iPhone或iPhone视网膜(3.5/4英寸)、iPad、iPad视网膜。分辨率类型的值各不相同
- (id) initWithCGImage:(CGImageRef)cgImage resolutionType:(ccResolutionType)resolution
您可以像这样构建CGImageRef:
UIImage *someImage = [UIImage imageNamed:@"someImage.png"];
CGImageRef someImageRef = someImage.CGImage;
你可以像这样检查你的设备类型
-(ccResolutionType)resolutionType{
static NSInteger ret=-1;
if (ret != -1) return ret;
if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
if( CC_CONTENT_SCALE_FACTOR() == 2 )
ret = kCCResolutioniPadRetinaDisplay;
else
ret = kCCResolutioniPad;
}
else
{
if( CC_CONTENT_SCALE_FACTOR() == 2 ){
BOOL isWideScreenEnabled = (BOOL)(fabs((double)[UIScreen mainScreen].bounds.size.height -
(double)568) < DBL_EPSILON);
if (isWideScreenEnabled) {
ret = kCCResolutioniPhone5Display;
}
else ret = kCCResolutioniPhoneRetinaDisplay;
}
else
ret = kCCResolutioniPhone;
}
if(ret == -1)
ret = kCCResolutionUnknown;
return ret;
}
或
你想要什么?来自CCTexture2D的CCSprite或UIImage/CGImage???两者均
front=[CCTexture2D addImage:@“iphone4_front.jpg”]代码>&front=[[CCTexture2D sharedTextureCache]添加图像:@“iphone4_front.jpg”]代码>返回“未找到类方法,返回类型默认为id”。CCTextureCache非CCTexture2D。获取纹理的另一种方法是创建CCSprite并使用sprite的“纹理”属性。
UIImage *someImage = [UIImage imageNamed:@"someImage.png"];
CGImageRef someImageRef = someImage.CGImage;
-(ccResolutionType)resolutionType{
static NSInteger ret=-1;
if (ret != -1) return ret;
if( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
if( CC_CONTENT_SCALE_FACTOR() == 2 )
ret = kCCResolutioniPadRetinaDisplay;
else
ret = kCCResolutioniPad;
}
else
{
if( CC_CONTENT_SCALE_FACTOR() == 2 ){
BOOL isWideScreenEnabled = (BOOL)(fabs((double)[UIScreen mainScreen].bounds.size.height -
(double)568) < DBL_EPSILON);
if (isWideScreenEnabled) {
ret = kCCResolutioniPhone5Display;
}
else ret = kCCResolutioniPhoneRetinaDisplay;
}
else
ret = kCCResolutioniPhone;
}
if(ret == -1)
ret = kCCResolutionUnknown;
return ret;
}
UIImage *someImage = [UIImage imageNamed:@"someImage.png"];
CGImageRef someImageRef = someImage.CGImage;
CCTexture2D *tex = [[CCTexture2D alloc] initWithCGImage:someImageRef resolutionType:kCCResolutionUnknown ];
CCTexture2D *tex = [[CCTexture2D alloc] initWithCGImage:someImageRef resolutionType:[self resolutionType]];