添加新的cocos2d CCNode类时,Subclass of CCScene
和Subclass of CCNode
之间有什么区别?当我关注cocos2d-tutorials时,我使用了CCScene,但是在cocos2d + SpriteBuilder项目中,默认的MainScene类是节点的子类,那么有人可以向我解释一下吗?
答案 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,但听起来就是这样。