cocos2D中HelloWorldScene.h和HelloWorldScene.cpp的简单解释

HelloWorldScene.h

#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__
#include "cocos2d.h"
class HelloWorld : public cocos2d::CCLayer
{
public:
                              
    // 这里有一个区别。“init”方法在cocos2d-x 返回 bool ,而不是返回“id”在 cocos2d-iphone
    virtual bool init(); 
                           
    // 没有“id”在cpp,所以我们推荐返回完全类指针
    static cocos2d::CCScene* scene();
                              
    // 一个选择器回调
    void menuCloseCallback(CCObject* pSender);
    // 手动实现 "static node()" 这个方法
    CREATE_FUNC(HelloWorld);
};
#endif  // __HELLOWORLD_SCENE_H__

HelloWorldScene.cpp


#include "HelloWorldScene.h"
using namespace cocos2d;
CCScene* HelloWorld::scene()
{
    CCScene * scene = NULL;
    do
    {
        // “场景”是一个生成自动释放对象
        scene = CCScene::create();
        CC_BREAK_IF(! scene);
        // “层”是一个生成自动释放对象
        HelloWorld *layer = HelloWorld::create();
        CC_BREAK_IF(! layer);
        // 添加层作为一个孩子到场景
        scene->addChild(layer);
    } while (0);
    // 返回现场
    return scene;
}
// 在“init”你需要初始化您的实例
bool HelloWorld::init()
{
    bool bRet = false;
    do
    {
        //////////////////////////////////////////////////////////////////////////
        // super init first
        //////////////////////////////////////////////////////////////////////////
        CC_BREAK_IF(! CCLayer::init());
        //////////////////////////////////////////////////////////////////////////
        // 下面添加你的代码……
        //////////////////////////////////////////////////////////////////////////
        // 1。添加一个菜单项以“X”的形象,这是点击退出程序。
        // 创建一个“close”以关闭图标菜单项目,这是一个自动释放对象。
        CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
            "CloseNormal.png",
            "CloseSelected.png",
            this,
            menu_selector(HelloWorld::menuCloseCallback));
        CC_BREAK_IF(! pCloseItem);
        // 将菜单项右下角测试
        pCloseItem->setPosition(ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20));
        // 创建一个菜单,菜单上的“close”菜单项,它是一个自动释放对象。
        CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
        pMenu->setPosition(CCPointZero);
        CC_BREAK_IF(! pMenu);
        // 添加菜单HelloWorld层作为一个孩子层。
        this->addChild(pMenu, 1);
        // 2。添加一个标签显示“Hello World”。
        // 创建一个标签和初始化与字符串“Hello World”。
        // CCLabelTTF只支持系统的字体,或者你自行添加的ttf字体
        CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Arial", 30);
        CC_BREAK_IF(! pLabel);
        // 得到窗口的大小和位置标签上。
        CCSize size = CCDirector::sharedDirector()->getWinSize();
        pLabel->setPosition(ccp(size.width / 2, size.height - 50));
        // 添加标签到HelloWorld层作为一个孩子层。
        this->addChild(pLabel, 1);
        // 3。添加添加一个启动画面,显示cocos2d飞溅的形象。
        CCSprite* pSprite = CCSprite::create("snake.png");
          
          
        CC_BREAK_IF(! pSprite);
        // 把精灵放在在屏幕的中心
        pSprite->setPosition(ccp(size.width/2, size.height/2));
        // 加入精灵到HelloWorld层作为一个孩子层。
        this->addChild(pSprite, 0);
        bRet = true;
    } while (0);
    return bRet;
}
void HelloWorld::menuCloseCallback(CCObject* pSender)
{
    // "close" 菜单项点击
    CCDirector::sharedDirector()->end();
}