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

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

先来看看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的绘制大小320*480,Rect(0,0,,,320,480)设置了绘制矩形的坐标点和长和宽,坐标为(0,0),长:480,宽;320
glview = GLView::createWithRect("My Game",Rect(0,0,320,480));
```

如在上篇中的图像就是在linux下命名终端下跑出来的游戏图,
  


我一般都是在电脑上把游戏写的差不多了之后才到手机端测试的,用电脑跑游戏要比手机快很多,而且直接操作终端,编译速度也比eclipse要快一些。

AppDelegate.cpp中主要代码也就在applicationDidFinishLaunching()函数中,函数中生成了GameLayer场景,然后调用导演类来运行这个场景。

好了这一篇主要介绍了AppDelegate中的一些变化,同时引出了游戏的GameLayer层,也即游戏主要逻辑层,接下来介绍游戏中的各个精灵元素和层。

加油学习啊

非常精彩!!

thank you fsdf sdf sdf sdf sdf sdf sdfsfsd

thank you for your share

为啥报错createWithRect”: 不是“cocos2d::GLView”的成员?

我也是的!!

3.5版本中,cocos2d::GLView中没有reateWithRect函数的,
把glview = GLView::createWithRect(“My Game”,Rect(0,0,320,480));
改为:
glview = GLViewImpl::createWithRect(“My Game”,Rect(0,0,320,480));
即可

赞赞赞~~~这个改动确实方便了太多~

楼主啊,一个问题想问,怎么实现画面自动适应手机屏幕大小啊?