您的位置:首页 > 移动开发 > Cocos引擎

Cocos2d-x 学习随记之一 hello,world工程注释!!

2014-04-17 11:49 405 查看
空闲的时间学习一下Cocos2d,顺手记录一些逝去的青春。。。。。

代码段如下:主要学习工程的流程以及注释解释。。。

//main.cpp 函数入口
#include "main.h"
#include "AppDelegate.h"
#include "CCEGLView.h"

USING_NS_CC;

int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR    lpCmdLine,
int       nCmdShow)
{
UNREFERENCED_PARAMETER(hPrevInstance);
UNREFERENCED_PARAMETER(lpCmdLine);

// 创建应用程序实例
AppDelegate app;
CCEGLView* eglView = CCEGLView::sharedOpenGLView();
//设置标题栏的名称
eglView->setViewName("mythcpp");
//设置窗口大小
eglView->setFrameSize(480, 320);
return CCApplication::sharedApplication()->run();
}
//main.h头文件,这些都有脚本自动生成
#ifndef __MAIN_H__
#define __MAIN_H__

#define WIN32_LEAN_AND_MEAN             // Exclude rarely-used stuff from Windows headers

// Windows Header Files:
#include <windows.h>
#include <tchar.h>

// C RunTime Header Files
#include "CCStdC.h"

#endif    // __MAIN_H__


//AppDelegate.cpp 主要是导演类的定义以场景的管理,都在这里处理。
#include "AppDelegate.h"
#include "HelloWorldScene.h"

USING_NS_CC;

AppDelegate::AppDelegate()
{
//AppDelegate构造函数
}

AppDelegate::~AppDelegate()
{
//AppDelegate析构函数
}
// 程序启动后调用此方法
bool AppDelegate::applicationDidFinishLaunching() {
// 初始化导演类
CCDirector* pDirector = CCDirector::sharedDirector();
CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();
//设置OpenGL视图
pDirector->setOpenGLView(pEGLView);

// 设置是否打开FPS、0或flase为不打开
pDirector->setDisplayStats(true);

// 设置FPS默认值,为每秒60帧
pDirector->setAnimationInterval(1.0 / 60);

// 创建一个场景,其使用智能指针进行内存管理,引用计数器方式
CCScene *pScene = HelloWorld::scene();

// 运行场景,真正的游戏开始。
pDirector->runWithScene(pScene);

return true;
}

// 当进入后台,运行此方法,
void AppDelegate::applicationDidEnterBackground() {
CCDirector::sharedDirector()->stopAnimation();

// 如果有声音,请进行声音暂停。
// SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
}

// 恢复游戏调用此方法。
void AppDelegate::applicationWillEnterForeground() {
CCDirector::sharedDirector()->startAnimation();

//恢复声音
// SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
}
//AppDelegate.h
#ifndef  _APP_DELEGATE_H_
#define  _APP_DELEGATE_H_

#include "cocos2d.h"

/**
@brief    The cocos2d Application.

The reason for implement as private inheritance is to hide some interface call by CCDirector.
*/
class  AppDelegate : private cocos2d::CCApplication
{
public:
AppDelegate();
virtual ~AppDelegate();

/**
@brief    Implement CCDirector and CCScene init code here.
@return true    Initialize success, app continue.
@return false   Initialize failed, app terminate.
*/
virtual bool applicationDidFinishLaunching();

/**
@brief  The function be called when the application enter background
@param  the pointer of the application
*/
virtual void applicationDidEnterBackground();

/**
@brief  The function be called when the application enter foreground
@param  the pointer of the application
*/
virtual void applicationWillEnterForeground();
};

#endif // _APP_DELEGATE_H_


//HelloWorldScene.cpp helloWorld场景的实现
#include "HelloWorldScene.h"
using namespace boost;
USING_NS_CC;

CCScene* HelloWorld::scene()
{

//‘场景’是一个自动释放的对象
CCScene *scene = CCScene::create();

// 'layer' 是一个自动释放的对象
HelloWorld *layer = HelloWorld::create();

// 添加 图层 到场景
scene->addChild(layer);

// return the scene
//返回场景
return scene;
}

// 在这里进行场景的一系列的初始化
bool HelloWorld::init()
{
//////////////////////////////
// 1. super init first
if ( !CCLayer::init() )
{
return false;
}

CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();

/////////////////////////////
// 2. 以“X”的形象,这是点击退出程序添加一个菜单项
//你可以修改它。

// 添加一个退出关闭按钮,它是一个自动释放的对象
CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
"CloseNormal.png",
"CloseSelected.png",
this,
menu_selector(HelloWorld::menuCloseCallback));

pCloseItem->setPosition(ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width/2 ,
origin.y + pCloseItem->getContentSize().height/2));

// 创建菜单,它是一个自动释放的对象
CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
pMenu->setPosition(CCPointZero);
this->addChild(pMenu, 1);

/////////////////////////////
// 3. 添加你的代码....

//添加一个标签以显示hello world
// 创建并初进行始化标签

//CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Arial", 24);
CCLabelTTF* pLabel = CCLabelTTF::create("Hello World!!!", "Arial", 48);
// 在场景中心位置显示标签
pLabel->setPosition(ccp(origin.x + visibleSize.width/2,
origin.y + visibleSize.height - pLabel->getContentSize().height));

// 添加标签到这一层
this->addChild(pLabel, 1);

// 创建hello world背景图
CCSprite* pSprite = CCSprite::create("HelloWorld.png");

// 在场景中心位置显示
pSprite->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));

//添加helloWorld精灵到这一层
this->addChild(pSprite, 0);

return true;
}

void HelloWorld::menuCloseCallback(CCObject* pSender)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)
CCMessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert");
#else
CCDirector::sharedDirector()->end();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
exit(0);
#endif
#endif
}


//"HelloWorldScene.h"
#ifndef __HELLOWORLD_SCENE_H__
#define __HELLOWORLD_SCENE_H__

#include "cocos2d.h"
#include "boost_head.h"

class HelloWorld : public cocos2d::CCLayer
{
public:
//初始化声明
virtual bool init();

// 返回实例的指针
static cocos2d::CCScene* scene();

// 一个选择回调函数
void menuCloseCallback(CCObject* pSender);

// 内存回收
CREATE_FUNC(HelloWorld);
};

#endif // __HELLOWORLD_SCENE_H__
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: