cocos2d的框架思路
这是我第一次写cocos的框架思路哈,虽然只是写完了一个程序,按理来说应该再多写一些,多积累一些经验了再来写这个框架的构成,但是我觉得还是把我这次写代码的所有想法先记下来哈,等到以后继续写cocos的程序了,有更多收获了再来把这篇文章给完善了。
cocos2d虽然是个游戏引擎,但是实际上是任何的程序都可以使用的哈。因为cocos能兼容任何CocoaTouch为框架的iOS程序,所以cocos能够用在任何程序上。cocos的作用,在我现在的理解来说,就是显示一些图片,然后可以任意改变图片的属性,做成动画效果(当然这只是我这个菜鸟的理解,我也还没有看到后面的粒子效果等等,相信学完cocos的全部内容以后我会对cocos有个更加完善的了解)。cocos提供给我的这个功能就相当于提供给我了一个GUI制作器,让我能够自定义制作GUI,也不用限制于苹果官方给我们的GUI类库了(其实我只是因为当时学习CocoaTouch的时候不够顺利,所以转型写了cocos,当然如果真的熟练掌握CocoaTouch当然是最好不过的了)。
当前,我只写了一个打砖块的小游戏,并没有用cocos2d真正去开发一款软件,所以这里只是阐述游戏的cocos2d的框架思路。
正常的游戏思路应该如下
整个游戏就是一个接受用户的触摸点击,然后进行计算,再把计算的结果转化成显示的过程,其实这个跟所有的程序都是一样的。也就是说,整个游戏分为三个层:输入层,逻辑层和显示层。
先说输入层,在iOS的设备里面,输入层的所有事件总共有两种:通过加速器完成的手机用户操作手机动作的输入、通过触摸屏完成的用户触摸屏幕点的输入。这两个输入分别由两个cocos2d提供的自带方法完成。监测加速器的方法最后能返回手机偏移的距离和方向,监测触摸的方法最后能返回触摸的点的坐标,这两个参数都会传入逻辑层进行处理,至此输入层的任务就完成了。
然后是逻辑层。逻辑层就是一个计算当前状态的过程。总共有三个需要的参数:上一刻的状态,手机偏移的距离和方向,触摸点的坐标(当然大多数的情况下后面两个参数只会需要一个有意义的参数,当然也可以两个参数都为空)。逻辑层会根据这三个需要的参数,计算出这一刻的状态,然后把这一刻的状态传给显示层,并储存起来用于下一次的使用。
最后是显示层。显示层其实就是一个页面,要在页面上绘制的东西的属性由逻辑层给出的状态决定。
显示层是游戏的最独特的层,这也是游戏区别于其它应用程序的地方,所有的画面都会由程序自己来进行自定义绘制。而使用系统自带UI控件则没有这个烦恼,系统会自动绘制控件,只需要改变控件的属性。当然这也是游戏的好处,游戏也可以做应用,而且可以做出各种自定义的应用,不用局限于Apple官方给的东西。
理清楚主要的游戏思路以后,看一些最基本的东西:
cocos2d总共分成几个重要的模块:
CCDirector,可以理解成游戏的控制台,它拥有最高权限。
我们一般会用它来获取关于设备的各种信息,更改设备底层的参数,最最重要的是控制场景的更换
(这里的CCDirector相当于逻辑层的最高主管,虽然它有最高的权限,但是大部分的事情都不由它来做,它只是一个指挥的作用)
CCScene,可以理解成游戏的场景,或者游戏的关卡,只有CCDirector能够控制它。
如果把游戏开始界面,结束界面都想象成关卡的话,CCScene就可以理解成游戏关卡了。更深层次地说,CCScene更像是一个容器,它里面装着当前关卡所要显示的所有东西,包括怪物、地图、主人公等等,都放在CCScene里面。也只有放在这个里面才能正常显示这些东西。
(这里的CCScene就相当于刚才游戏思路里面的显示层,所有放在当前CCScene的东西都能被绘制,所以逻辑层所给出的状态,就是用于创建控件,或者改变在CCScene中所有控件的状态。)
CCLayer,可以理解成当前关卡游戏的某一层,属于CCScene控制。
可以这么想象,你在玩有摇杆的飞机大战,摇杆显示在最顶层,而且跟飞机都没有关系,所以摇杆是顶层,飞机是第二层,背景在最下面,而且跟飞机和摇杆都没有关系,所以背景在最后一层。这样可以理解层的概念了么。然后关于层跟CCScene的关系,其实层也是容器,刚才说的顶层里面装着摇杆,飞机层装着飞机子弹,底层装着地图,但是层把这些东西装进来以后,还是要把自己装到CCScene里面,这样才能够显示这些东西。
(这里的CCLayer可以理解为一个小型的显示层,几个小型的显示层拼凑成一个完整的CCScene)
CCSprite,最基础的类,里面放着一张图片(比如飞机),改变这个类实例的属性会改变图片的属性,放在CCLayer和CCScene里面。
虽然是这么说,但是并不仅仅是CCSprite一个,还有一些比如CCLabelTTF(显示文字),CCButton(显示按钮),CCMenu(显示菜单)等等,都是最基础的类,所有你能在屏幕看到的东西都是装到这些类里面的,然后不断修改它们就会产生动画效果和游戏效果。
(这里的CCSprite和其它的那些就相当于显示层上的控件,是由它们接受逻辑层的属性输入,改变了以后把自己放到显示层上)
cocos2d的框架思路的更多相关文章
- [转]Android应用程序框架思路整理
一.一般Android应用程序架构(Book,购彩,Market). 普通的应用程序由于只需要用到Android的联网与显示的功能,所以应用程序大体上是呈现为UI(Activities)与网络(Net ...
- 自己动手实现爬虫scrapy框架思路汇总
这里先简要温习下爬虫实际操作: cd ~/Desktop/spider scrapy startproject lastspider # 创建爬虫工程 cd lastspider/ # 进入工程 sc ...
- backbone框架思路
Backbone是MVC框架.如何使用这个框架来简化前端过程呢?作为一个初学者,虽然网上有它的官方文档,但是都是讲的一些方法,思路分析的却对初学者来说,看得晕乎乎的.现在就把自己对这个框架的理解记录在 ...
- 面向UI编程框架:ui.js框架思路详细设计
由于上一次的灵光一闪,萌生了对面向UI编程的思想实现.经过一段时间的考虑和设计,现在将思想和具体细节记录下来: 具体思路描述: 在UI.config文件中,配置所有参数,比如页面模板.所有组件.组件控 ...
- jQuery源代码框架思路
開始计划时间读源代码,第一节jQuery框架阅读思路整理 (function(){ jQuery = function(){}; jQuery一些变量和函数和给jQuery对象加入一些方法和属性 ex ...
- [JS思路]运动框架思路
匀速运动的思路一: 1.先清除动画,再加载动画 2.方向dir有正值和负值,可以通过 目标值 > 当前值 往右移动,即正数 目标值 < 当前值 往右移动,即负数 来进行判断:dir = ...
- WEB网页监控系统的设计框架思路具体解释
提示:也能够直接在LCD上显示摄像头数据.这个參考luvcview源代码.设计思路思将YUV或者MJPEG格式的数据转换成RGB格式的数据,然后实现图片的缩放,图像缩放算法:点击这里!,然后写到fra ...
- PAT 1034 有理数四则运算(20)(代码框架+思路+测试点错误分析)
1034 有理数四则运算(20)(20 分)提问 本题要求编写程序,计算2个有理数的和.差.积.商. 输入格式: 输入在一行中按照"a1/b1 a2/b2"的格式给出两个分数形式的 ...
- 基于python+selenium的框架思路(二)
一.如下是用例格式,第一个sheet为用例汇总,后面的sheet为具体的用例步骤 sheet:测试用例 sheet:搜索 sheet:刘江博客验证 二.读取该excel文件取出关键字等信息,作为关键字 ...
随机推荐
- Oracle11g数据库导入到oracle10g的解决方法
我想有很多人在工作和学习中遇到这样的一个问题,Oracle数据库服务器版本和本机版本不一致问题,你的本机要是比服务器的版本要高的话还好,如果你本机是10g服务器是11g的话,从11g导出来的数据库是导 ...
- jar包的生成及运行
Hello, 大家好,我们见面了,今天是2015年7月30日,我在青岛,你好吗? 这里总结下刚学习到的jar包的生成和运行,网上的资料一搜一大片,我这里总结下适用的 一:jar包的生成: 1:命令行, ...
- opencart 模块开发详解
opencart 模块开发详解 由 xiekanxiyang » 2013年 7月 11日 10:17 pm opencart 将页面分成若干模块, 每个模块可以有多个实例(可能这样说不是很恰当) 每 ...
- java.lang.ClassCastException: java.math.BigDecimal cannot be cast to java.lang.String
http://blog.csdn.net/agileclipse/article/details/17161225 详情请点击链接查看
- asp.net发布和更新网站
我们一般使用ftp软件来更新网站,而更新之前的一个步骤就是发布项目.以下将讲解asp.net mvc如何发布网站. 打开项目 右键点击项目,选择“发布” 第一次发布前,需要配置一下发布配置文件:点击” ...
- java SWT/Rap 计算器版本2(键盘鼠标兼容)
package cn.lesaas.nof.rwtswt.ui.dialog; import java.math.BigDecimal; import org.eclipse.swt.SWT;impo ...
- PHPCMS(2)PHPCMS V9 环境搭建(转)
转自:http://www.cnblogs.com/Braveliu/p/5072920.html PHPCMS V9的学习总结分为以下几点: [1]PHPCMS 简介 PHP原始为Personal ...
- visualSVN server库迁移(转)
转自:http://blog.csdn.net/yuhuijun_1/article/details/9762683 首先,VisualSVN Server Manager,包含两个路径,一个是安装路 ...
- WIN7下运行hadoop程序报:Failed to locate the winutils binary in the hadoop binary path
之前在mac上调试hadoop程序(mac之前配置过hadoop环境)一直都是正常的.因为工作需要,需要在windows上先调试该程序,然后再转到linux下.程序运行的过程中,报Failed to ...
- Ajax之HTTp请求
71.Ajax的基础概念 *运用html和css来实现页面表达信息 *运用XMLHttpRequest和web服务器进行数据的异步交换 *运用JavaScript操作DOM来实现动态局部刷新 2 ...