Cocos2dx学习笔记(四)关闭按钮
来源:互联网 发布:mac终端退出vim 编辑:程序博客网 时间:2024/05/07 21:47
1、前三篇文章加上这一篇,基本将HelloWorld这个程序重新实现了一遍(当然有不同,稍后再提),现在将剩下的关闭按钮实现。
2、其实,这些类似按钮(菜单)、文字等内容,都有相应的已经实现的类,只要构造这些类的对象,再放入场景中就可以了。
3、在init函数中添加如下代码:
// 关闭按钮
CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
"CloseNormal.png"
,
"CloseSelected.png"
,
this
,
menu_selector(MyHelloWorldScene::menuCloseCallback));
pCloseItem->setPosition(ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width/2 ,
origin.y + pCloseItem->getContentSize().height/2));
CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
4、然后实现相应的回调函数menuCloseCallback:
void
menuCloseCallback(CCObject* pSender);
void
MyHelloWorldScene::menuCloseCallback(CCObject* pSender)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT) || (CC_TARGET_PLATFORM == CC_PLATFORM_WP8)
CCMessageBox(
"You pressed the close button. Windows Store Apps do not implement a close button."
,
"Alert"
);
#else
CCDirector::sharedDirector()->end();
#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
exit
(0);
#endif
#endif
}
5、运行如下:
6、至此,整个HelloWorld的效果已经实现了,但是与实例代码相比,你会发现有许多不同的地方,最大的不同就是我的实现中没有创建层(Layer),而是直接将图片(精灵)、文字以及菜单放到场景(Scene)中了。这么做的原因是为了搞清楚Cocos2d-x项目的结构和初始化过程。
7、现在应该清楚这样一个关系:导演 -> 场景 -> 场景中显示的内容。当然,导演只有一个,但是场景会有很多;场景中的内容就更多了。
8、举例来说,一个典型的手机游戏的界面应该由以下几个部分组成:
(1)背景:一般来说就是一张背景图片(或是地图),譬如水果忍者的菜板;
(2)动作:譬如游戏角色的移动、攻击等效果;
(3)触摸:这部分通常是一些虚拟按键,最典型的就是虚拟方向控制键;
(4)菜单:通常悬浮在屏幕边缘,可以随时打开,以便设置音量、查看积分等;
这四个部分都是可以用眼睛看到的,但是问题随之而来了,譬如要实现“控制角色移动”这一视觉效果,其实是一个复杂的过程:首先,用户触摸相应的方向键,然后在处理触摸操作的函数中显示角色动作(几张角色动作图片快速切换),此时角色就像似在原地踏步,为了达到移动的视觉效果,让背景移动起来,这样就实现了角色移动。
问题是如何实现背景移动的同时,角色在做相应的动作(不止一个角色),同时还要接受用户的触摸输入,同时菜单的位置不变并能随时响应。当然解决的方法不只一个,而Cocos2d-x中的方法是,引入一个层(Layer)的概念。简单来说,上述的四个部分就是四个层(有的书上叫布景),这些层分别显示一部分视觉效果,熟悉PhotoShop的人可能比较容易理解,这里的层与图层很类似。
9、场景和层的区别以及关系
(1)场景的概念大于层,层可以理解为一部分要在场景中显示的内容的集合。
(2)场景和层很相似,相当于一个容器,这个容器可以装入其它的游戏元素;也就是说,场景和层本来是没有视觉上的显示效果的,只有将游戏的各种元素添加进这个容器后,才出现了游戏的效果。而游戏中能够被看到的几乎都是精灵,这是另一个概念,此处略过。
(3)层不能独立显示,必须放到场景中才有意义。
10、现在填补以下上面提到过的关系:导演 -> 场景 -> 层 -> 视觉元素
11、如上关系所示,在场景中专心管理各个层,而将其它显示内容放到层中。事实上,所谓的层就是一种z序,在相应的z序上显示一部分内容。
12、附上几张关系图(源自网络):
- Cocos2dx学习笔记(四)关闭按钮
- cocos2dx游戏开发学习笔记(四)之Hello World
- JSP学习笔记(四):点击按钮跳转到action
- bootstrap框架学习笔记四(按钮、导航、导航条)
- Ionic3学习笔记(四)修改返回按钮文字、颜色
- cocos2dx学习笔记(cocos2dx特效)
- cocos2dx学习笔记(cocos2dx特效)
- 【cocos2dx】cocos2dx学习笔记
- Android 学习笔记四:创建工具栏按钮
- cocos2dx学习笔记(转)
- cocos2dx学习笔记(选择器)
- cocos2dx学习笔记(定时器)
- cocos2dx学习笔记(截图)
- cocos2dx学习笔记(定时器)
- cocos2dx学习笔记(选择器)
- cocos2dx学习笔记(截图)
- cocos2dx学习笔记(多线程)
- cocos2dx学习笔记(一)
- 网桥处理
- 第十二周项目三——求n的阶乘
- OpenGL编程环境配置
- android性能测试systrace
- c/c++ 大段字符串常量
- Cocos2dx学习笔记(四)关闭按钮
- 漫漫说网页
- 简单的JFrame和JButton
- 黑马程序员—虚拟机的安装、Mac OS X系统使用、五个OC小程序
- web.py简用
- 二货赞(axure作品)
- Java集合总览
- ROS(hydro)下安装turtlebot出现的错误与解决办法
- 汉牛激光网页