cocos2d-iphone中“CCScene的子类”和“CCNode的子类”之间有什么区别?

时间:2014-08-05 19:19:54

标签: cocos2d-iphone spritebuilder

添加新的cocos2d CCNode类时,Subclass of CCSceneSubclass of CCNode之间有什么区别?当我关注cocos2d-tutorials时,我使用了CCScene,但是在cocos2d + SpriteBuilder项目中,默认的MainScene类是节点的子类,那么有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:1)

很少。打开CCScene的头文件,你会看到它是CCNode的子类。如果你打开CCScene的实现文件,你基本上会看到这个(假设我们正在谈论cocos2d v3):

@implementation CCScene

// -----------------------------------------------------------------

// Private method used by the CCNode.scene property.
-(BOOL)isScene {return YES;}

-(id)init
{
    if((self = [ super init ]))
    {
        CGSize s = [CCDirector sharedDirector].designSize;
        _anchorPoint = ccp(0.0f, 0.0f);
        [self setContentSize:s];

        self.colorRGBA = [CCColor blackColor];
    }

    return( self );
}

// -----------------------------------------------------------------

- (void)onEnter
{
    [super onEnter];

    // mark starting scene as dirty, to make sure responder manager is updated
    [[[CCDirector sharedDirector] responderManager] markAsDirty];
}

// -----------------------------------------------------------------

- (void)onEnterTransitionDidFinish
{
    [super onEnterTransitionDidFinish];

    // mark starting scene as dirty, to make sure responder manager is updated
    [[[CCDirector sharedDirector] responderManager] markAsDirty];
}

// -----------------------------------------------------------------

@end

您在上面看到的是场景的实现。它本质上是一个节点,内容大小设置为设计大小(视图大小,如果没有设置),锚点为(0,0),标志将其标记为场景(由CCNode私下使用)和RGBA的黑色。 CCNode不会假设这些内容(例如节点的内容大小为0,0,而场景的内容大小为视图/设计)。

节点是许多cocos2d类的基类。如您所见,场景只是一个具有有意义名称的节点,设置的内容大小与视图的大小(除非您指定设计大小)和黑色。另一方面,精灵也是一个节点,但具有与精灵相关的其他属性。

我没有打扰使用Sprite Builder,但是我假设你写的内容已经将所有内容添加到CCNode中,最终将其添加到CCScene中。由于没有CCLayer,我认为它只是使用CCNode作为默认层。其他人可以确认,因为我从来没有理由使用Sprite Builder,但听起来就是这样。