既上一篇介绍了游戏的主要概况下,这篇来开始讲一下游戏中的各个文件。
先来看看cocos2d-x 3.0 中一个比较赞的功能,比起3.0以前的要令人非常激动的。虽说3.0出来很久了,我还是说下这个功能,知道的飘过。
对于在不同环境下用cocos2d-x开发手游,屏幕尺寸是一个比较蛋疼的问题,比如在3.0以前,在代码中修改屏幕尺寸还是比较麻烦的,而且在电脑上运行良好的尺寸到手机端感觉效果就差了一点。
AppDelegate.cpp是整个游戏的入口程序,3.0以前设置游戏尺寸时主要代码如下:
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if (!glview) {
glview = GLView::create("My Game");
director->setOpenGLView(glview);
}
director->setOpenGLView(glview);
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)
// a bug in DirectX 11 level9-x on the device prevents ResolutionPolicy::NO_BORDER from working correctly
glview->setDesignResolutionSize(designResolutionSize.width, designResolutionSize.height, ResolutionPolicy::SHOW_ALL);
#else
glview->setDesignResolutionSize(288, 512, ResolutionPolicy::SHOW_ALL);
#endif
director->setDisplayStats(true);
director->setAnimationInterval(1.0 / 60);
auto scene = LoadingScene::create();
director->runWithScene(scene);
return true;
}
其中主要的代码为:
glview->setDesignResolutionSize(288, 512, ResolutionPolicy::SHOW_ALL);
设置的尺寸大小为宽288,长512的尺寸,这在ubuntu下的效果看起来不是特别的好,主要是两边都是黑色的,只有中间才是游戏的屏幕显示。
而在3.0中可以直接在代码中设置GLView的大小,也就是绘制的游戏屏幕的大小,
同样的为AppDelegate.cpp中的applicationDidFinishLaunching()函数,如下:
bool AppDelegate::applicationDidFinishLaunching() {
// initialize director
auto director = Director::getInstance();
auto glview = director->getOpenGLView();
if(!glview) {
glview = GLView::createWithRect("My Game",Rect(0,0,320,480));
director->setOpenGLView(glview);
}
director->setDisplayStats(false);
director->setAnimationInterval(1.0 / 60);
auto scene = GameLayer::createScene();
director->runWithScene(scene);
return true;
}
感觉清晰的多了吧,重点在于
glview = GLView::createWithRect("My Game",Rect(0,0,320,480));
的部分,直接设置了GLView的绘制大小320*480,Rect(0,0,,,320,480)设置了绘制矩形的坐标点和长和宽,坐标为(0,0),长:480,宽;320
如在上篇中的图像就是在linux下命名终端下跑出来的游戏图,
我一般都是在电脑上把游戏写的差不多了之后才到手机端测试的,用电脑跑游戏要比手机快很多,而且直接操作终端,编译速度也比eclipse要快一些。
AppDelegate.cpp中主要代码也就在applicationDidFinishLaunching()函数中,函数中生成了GameLayer场景,然后调用导演类来运行这个场景。
好了这一篇主要介绍了AppDelegate中的一些变化,同时引出了游戏的GameLayer层,也即游戏主要逻辑层,接下来介绍游戏中的各个精灵元素和层。