先来看一下目录结构:
Assets:游戏资源文件,图片音频等,Resource文件夹也有类似功能
include:用于放置游戏头文件
Shaders:渲染器着色器文件(大雾)
cocos2dorig.cpp/.h:Direct3D游戏默认入口,默认文件名和项目名相同,在Cocos2dx中,经由这里转而启动AppDelegate
//WP8Direct3D游戏默认启动入口 IFrameworkView^ Direct3DApplicationSource::CreateView() { return ref new PhoneDirect3DAppDemo(); } [Platform::MTAThread] int main(Platform::Array<Platform::String^>^) { auto direct3DApplicationSource = ref new Direct3DApplicationSource(); CoreApplication::Run(direct3DApplicationSource); return 0; } //Cocos2dx启动入口 IFrameworkView^ Direct3DApplicationSource::CreateView() { return ref new cocos2dorig(); } ref class CCApplicationFrameworkViewSource sealed : Windows::ApplicationModel::Core::IFrameworkViewSource { public: virtual Windows::ApplicationModel::Core::IFrameworkView^ CreateView() { return cocos2d::getSharedCCApplicationFrameworkView(); } }; [Platform::MTAThread] int main(Platform::Array<Platform::String^>^) { //auto direct3DApplicationSource = ref new Direct3DApplicationSource(); //CoreApplication::Run(direct3DApplicationSource); AppDelegate App; auto frameworkViewSource = ref new CCApplicationFrameworkViewSource(); Windows::ApplicationModel::Core::CoreApplication::Run(frameworkViewSource); return 0; }
AppDelegate.cpp/.h:
游戏通用入口文件,控制着游戏的生命周期
bool AppDelegate::applicationDidFinishLaunching()
游戏启动后调用这个方法
bool AppDelegate::applicationDidFinishLaunching() { // 初始化游戏引擎控制器 CCDirector *pDirector = CCDirector::sharedDirector(); pDirector->setOpenGLView(CCEGLView::sharedOpenGLView()); // 开发阶段可以打开FPS显示以观察流畅度 //pDirector->setDisplayFPS(false); // 设置横竖屏显示 pDirector->setDeviceOrientation(CCDeviceOrientationPortrait); // 设置每秒刷新率即FPS,默认每秒60次 //pDirector->setAnimationInterval(1.0 / 60); // 创建场景 CCScene *pScene = HelloWorld::scene(); // 运行场景 pDirector->runWithScene(pScene); return true; }
void AppDelegate::applicationDidEnterBackground()
游戏转入后台时进行的操作,一般来说,要将游戏暂停
void AppDelegate::applicationWillEnterForeground()
游戏回到前台时对应的操作
HelloWorld游戏的场景,在AppDelegate::applicationDidFinishLaunching()中创建并运行。
CCScene* HelloWorld::scene()
场景创建
CCScene* HelloWorld::scene() { CCScene * scene = NULL; do { // 创建一个空场景 scene = CCScene::create(); CC_BREAK_IF(! scene); // 创建一个HelloWorld层 HelloWorld *layer = HelloWorld::create(); CC_BREAK_IF(! layer); // 将HelloWorld层添加到场景中 scene->addChild(layer); } while (0); return scene; }
bool HelloWorld::init()
初始化HelloWorld类
bool HelloWorld::init() { bool bRet = false; do { //调用父类方法进行初始化 if ( !CCLayer::init() ) { break; } //创建文字标签添加到层中 CCSize size = CCDirector::sharedDirector()->getWinSize(); CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Times New Roman", 24); pLabel->setPosition( ccp(size.width * 0.5, size.height * 0.5) ); pLabel->setColor(ccc3(160, 80, 5)); this->addChild(pLabel, 1); //创建显示HelloWorld的精灵并添加到层中 CCSprite *b = CCSprite::create("HelloWorld.png"); b->setPosition(ccp(0, 0)); b->setPosition(ccp(size.width * 0.5, size.height * 0.5)); this->addChild(b); //设置程序可以响应触摸 setTouchEnabled(true); bRet = true; } while (0); return bRet; }