为什么Cocos2D编程指南建议使用initWithTexture?

时间:2012-06-16 13:37:07

标签: iphone ios cocos2d-iphone sprite

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

1 个答案:

答案 0 :(得分: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中执行它可以保证它将被运行。