首页 > 代码库 > 豪华版飞机大战系列(二)

豪华版飞机大战系列(二)

既上一篇介绍了游戏的主要概况下,这篇来开始讲一下游戏中的各个文件。

先来看看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层,也即游戏主要逻辑层,接下来介绍游戏中的各个精灵元素和层。



豪华版飞机大战系列(二)