Cocos2d 自定义Scene的实现方法

通过cocos2d模板自动生成的程序,会有一个HelloWorldScene的文件,

其实这里面并没有定义叫做HelloWorldScene的类

而是定义了一个叫做HelloWorld的CCLayer的子类,该类有一个类函数,用于返回一个CCScene

+(id) scene
{
	// 'scene' is an autorelease object.
	CCScene *scene = [CCScene node];
	
	// 'layer' is an autorelease object.
	HelloWorld *layer = [HelloWorld node];
	
	// add layer as a child to scene
	[scene addChild: layer];
	
	// return the scene
	return scene;
}

从代码可以看出,这里定义了一个CCScene,并将一个HelloWorld的实例作为其子节点。

有的时候,开发人员可能需要实现自己的scene类(CCScene的子类),可以参考前面代码的方式稍作修改,如下

//.h
#import <Foundation/Foundation.h>
#import "cocos2d.h"

@interface MenuScene : CCScene {
	
}
@end

@interface MenuLayer : CCLayer {
	
}
@end
//.m
@implementation MenuScene

- (id) init {
    self = [super init];
    if (self != nil) {
		
        [self addChild:[MenuLayer node]];
		
    }
    return self;
}

-(void)dealloc
{
	[super dealloc];
}

@end

@implementation MenuLayer
- (id) init {
    if ((self = [super init])) {
		
    }
    return self;
}

-(void)dealloc
{
	[super dealloc];
}
@end
这样,就分开了scene和layer,可以对scene进行自定义。

你可能感兴趣的:(interface,layer)