0

我发现在cocos2d Best Practices中有一个建议使用 initWithTexture 来初始化精灵子类,而不是在几本书和教程中我发现你也可以使用 initWithSpriteFrameName。这是为什么?

4

1 回答 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;
}

其他函数(initWithFileinitWithSpriteFrameinitWithSpriteFrameName等)也initWithTexture:rect直接或间接调用。如果您的CCSprite子类有任何需要进行的特殊初始化(因为它表面上会这样,因为您正在继承另一个类),那么这样做可以initWithTexture:rect保证它将运行。

于 2012-06-16T13:43:27.343 回答