Scene (场景):
场景是cocos2d中的一个重要概念,可以理解为一个舞台,我们可以向这个舞台添加元素(层,精灵和控件),让这个舞台变得生动起来。场景用Scene表示它继承了Node类,下面的代码是用来创建一个场景
Scene* HelloWorld::createScene() { // 'scene' is an autorelease object auto scene = Scene::create(); //创建一个场景类 // 'layer' is an autorelease object auto layer = HelloWorld::create(); //创建一个HelloWorld对象,找个对象是一个层, // add layer as a child to scene scene->addChild(layer); //将layer对象添加到scene对象中 // return the scene return scene; //最后返回一个scene场景对象 }
已经创建好了一个场景下面就要把这个场景添加到我们的窗口中去
bool AppDelegate::applicationDidFinishLaunching() { // initialize director auto director = Director::getInstance(); auto glview = director->getOpenGLView(); if(!glview) { glview = GLView::create("My Game"); //设置窗口的名字 glview->setFrameSize(1024,768); //设置窗口的大小 director->setOpenGLView(glview); } // turn on display FPS director->setDisplayStats(true); //设置是否显示游戏的帧率等调试信息 // set FPS. the default value is 1.0/60 if you don't call this director->setAnimationInterval(1.0 / 60); //设置帧率,这里是每秒60帧 // create a scene. it's an autorelease object auto scene = HelloWorld::createScene(); ///用来说明创建的场景是有哪个头文件创建的(设置默认的启动场景) // run director->runWithScene(scene); //将初始场景加载到环境中,次函数只能在家在第一个场景是使用 return true; }说道这里我们有必要说一个Director这个类,这是一个导演类,它的功能很强大,比如说场景的切换,游戏的暂停与继续,世界坐标和GL坐标之间的切换,对于精灵的控制,还有一些数据的保存,屏幕尺寸的获取等等都需要用到这个强大的“导演”。
在创建场景的过程中用到了create函数来创建,创建的过程中调用了init函数,这是由系统自动调用的,用的正是一个宏函数,如下
#define CREATE_FUNC(__TYPE__) \ static __TYPE__* create() \ { \ __TYPE__ *pRet = new __TYPE__(); \ if (pRet && pRet->init()) \ { \ pRet->autorelease(); \ return pRet; \ } \ else \ { \ delete pRet; \ pRet = NULL; \ return NULL; \ } \ }这是系统创建的一个宏函数,参数是_TYPE_。比如说你传进来的是HelloWorld,那么代码中所有_TYPE_的地方都要换成HelloWorld,采用这样的方法来完成初始化工作。
Layer (层):
下面说一些关于层的一些概念。顾名思义,层就是依附于场景之上的图层,它可以响应用户的操作事件,另外在一个场景中,层与层还是有区别的有些层会覆盖在其它层上方,这是由用户自己设定的。创建一个层很简单
Layer* layer = Layer::create();一个层必须添加到场景中才能发挥作用,也就是说,层无法抛开场景而独立存在。
Sprite(精灵) :
精灵可以理解为游戏中的对象,创建方法如下:
Sprite* sprite = Sprite::create("CloseNormal.png");