我发现在cocos2d Best Practices中有一个建议使用 initWithTexture 来初始化精灵子类,而不是在几本书和教程中我发现你也可以使用 initWithSpriteFrameName。这是为什么?
问问题
487 次
1 回答
4
CCSprite
用于initWithTexture:rect
创建精灵的所有初始化方法。例如,
-(id) initWithFile:(NSString*)filename
{
NSAssert(filename!=nil, @"Invalid filename for sprite");
CCTexture2D *texture = [[CCTextureCache sharedTextureCache] addImage: filename];
if( texture ) {
CGRect rect = CGRectZero;
rect.size = texture.contentSize;
return [self initWithTexture:texture rect:rect];
}
[self release];
return nil;
}
其他函数(initWithFile
、initWithSpriteFrame
、initWithSpriteFrameName
等)也initWithTexture:rect
直接或间接调用。如果您的CCSprite
子类有任何需要进行的特殊初始化(因为它表面上会这样,因为您正在继承另一个类),那么这样做可以initWithTexture:rect
保证它将运行。
于 2012-06-16T13:43:27.343 回答