不好的地方请大家指出
第一节 开始界面的绘制
好了,我们正式开始贪食蛇的编码工作了,首先我们要绘制一个开始界面,再开始绘制之前我们先要设置一下游戏的分辨率和屏幕适配方式。
我们打开AppDelegate.cpp文件,在applicationDidFinishLaunching()函数中添加一行代码
glview->setDesignResolutionSize(480, 320, ResolutionPolicy::EXACT_FIT);
注意:在3.0里最后一个参数的写法和2.0的不一样哦!
记得是在glview创建完后添加的哦,简单的解释一下这个函数的参数,第一个和第二个参数代表的分别是游戏分辨率的宽度和高度,第3个表示的是屏幕适配方式,我们选择的是EXACT_FIT 关于屏幕适配的具体知识我就不说了,我贴一个网址,里面还介绍了cocos2dx里面几个尺寸的概念,讲的比较好。
Cocos2dx屏幕适配新解,网址 http://blog.csdn.net/cen616899547/article/details/9110749
好了,屏幕分辨率和适配方式设定完后,我们进入绘制的阶段,在开始界面我们要完成两样东西的绘制,一个是背景图,一个是开始游戏的按钮。我们打开PS绘制一张480X320的背景图和一个按钮(按钮大小自己可以随便定,别比背景大就行了)

上面2张图就是我画的背景和开始按钮了。有了素材之后我们打开HelloWorldScene.h。在里面添加3个成员和一个成员函数
Sprite* background;
MenuItemImage* playbutton;
Menu* menu;
void ChangeScene();
```
先提一点,MenuItemImage是我们的按钮,要使这个按钮能够使用,我们还需要一个Menu类。为什么呢,我后面会写到的。
接下来我们打开HelloWorldScene.cpp重写里面的init()函数。
bool HelloWorld::init()
{
if ( !Layer::init() )
{
return false;
}
Size visibleSize = Director::getInstance()->getVisibleSize();
//Point origin = Director::getInstance()->getVisibleOrigin();
background = Sprite::create("StartScene.png");
background->setPosition(Point(visibleSize.width/2,visibleSize.height/2));
this->addChild(background);
playbutton = MenuItemImage::create("PlayButton1.png","PlayButton2.png",CC_CALLBACK_0(HelloWorld::ChangeScene,this));
playbutton ->setPosition(Point(visibleSize.width/2,visibleSize.height/2-1.5*playbutton->getContentSize().height));
menu = Menu::create(playbutton,NULL);
menu->setPosition(Point::ZERO);
this->addChild(menu);
return true;
}
```
这个函数是HelloWorldScene这个layer的初始化函数,我们在里面设置我们的背景和按钮。这里我们先获取屏幕的可视大小,然后将背景图设置在屏幕的中心。为什么不是设置在原点的位置呢,这里牵涉到一个锚点的概念,默认的锚点是在物体的中心的,关于锚点的概念,请戳 http://blog.csdn.net/xuguangsoft/article/details/8425623
然后我们设置我们的开始按钮,前两个参数分布是按钮未按下时显示的图片以及按钮被按下时显示的图片,注意,在creat函数中我们要定义我们的回调函数,什么是回调函数呢,回调函数就是当你点击这个按钮时,这个按钮会去执行你预先设置的某个函数,回调函数是可以传参数的,CC_CALLBACK是3.0的一个新元素,写法和2.x的不一样,具体用法呢,请继续戳
http://blog.sina.com.cn/s/blog_923fdd9b0101efl1.html
我们设置的回调函数是GameLayer类里的ChangeScene函数 (GameLayer这个类会在下节讲到),这个函数有什么用呢?不要急,下一节也会讲到的。
同样,设置按钮的位置,然后我们初始化menu对象,将开始按钮对象添加到menu中,然后设置menu的位置,我们将menu的位置设置在原点。记住,Menu里面的MenuItenImage类的位置是相对Menu的,即MenuItemImage在屏幕里的实际位置等于MenuItemImage的位置加上Menu的位置。然后将所有的对象用addChild函数都加到layer中去。
Ok,到这里我们已经完成了开始画面的绘制了,下一节我们要讲到场景(Scene)的切换。
我的开始画面是这样的,你们的呢?
这里再加一个我自己设计的Icon
未完。。。。



