3.4.1 CCLayer类的函数

CCLayer类的主要函数如表3-9所示。

表3-9 CCLayer类的主要函数

来看Cocos2D-x的HelloWorld项目中的HelloWorldScene.cpp文件,scene函数定义CCLayer类并把它加入场景中,如代码清单3-16所示。

代码清单3-16 scene函数定义CCLayer类并把它加入场景中

CCScene* HelloWorld::scene()
{
    //新建场景类实例
    CCScene *scene=CCScene::create();
    //定义布景层
    HelloWorld *layer=HelloWorld::create();
    //将布景层加入场景
    scene->addChild(layer);
    //返回场景类
    return scene;
}

CCLayer类的init函数在创建布景层时被调用,如代码清单3-17所示。

代码清单3-17 CCLayer类的init函数

bool HelloWorld::init()
{
    if (!CCLayer::init())
    {
        return false;
    }
    CCMenuItemImage *pCloseItem=CCMenuItemImage::create(
                                      "CloseNormal.png",
                                      "CloseSelected.png",
                                      this,
    menu_selector(HelloWorld::menuCloseCallback));
    pCloseItem->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().
    width - 20,20));
    CCMenu* pMenu=CCMenu::create(pCloseItem,NULL);
    pMenu->setPosition(CCPointZero);
    this->addChild(pMenu,1);
    CCLabelTTF* pLabel=CCLabelTTF::create("Hello World","Arial",24);
    CCSize size=CCDirector::sharedDirector()->getWinSize();
    pLabel->setPosition(ccp(size.width/2,size.height - 50));
    this->addChild(pLabel,1);
    CCSprite* pSprite=CCSprite::create("HelloWorld.png");
    pSprite->setPosition(ccp(size.width/2,size.height/2));
    this->addChild(pSprite,0);
    return true;
}

本书将在后面介绍具体显示在层次上的对象,目前只需要了解在init函数中定义要显示的对象并把它作为子类加入场景中。另外,关于触屏、键盘、加速度传感器等输入,将在后面的章节介绍。本节后面将介绍CCLayer类的子类。