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文件取出关键字等信息,作为关键字 ...
随机推荐
- 用PHP实现一个高效安全的ftp服务器(一)
摘要: 本文主要阐述使用PHP的swoole扩展实现ftp服务器,同时扩展ftp服务器个性化功能和安全性.真正实现一个自己完全掌控的ftp服务器,可以个性化定制的ftp服务器. 正文: FTP服务器想 ...
- ExtJs 第二章,Ext.form.Basic表单操作
1.认识Ext.form.Panel表单面板 Ext.form.field.CheckBox 复选框 checkboxfield Ext.form.CheckBoxGroup 复选框组 ...
- Linux 系统命令及其使用详解(大全)
(来源: 中国系统分析员) cat cd chmod chown cp cut 1.名称:cat 使用权限:所有使用者 使用方式:cat [-AbeEnstTuv] [--help] [--versi ...
- 9张思维导图学习Javascript
分别归类为: javascript变量 javascript运算符 javascript数组 javascript流程语句 javascript字符串函数 javascript函数基础 javascr ...
- dedecms 发布文章时,关键字会自动加内链
在后台找到:核心->批量维护->文档关键词维护 把关键字和链接网址删掉就可以了,生成更新后前端页面就不会再链接了.>_<.
- phpcms栏目调用
{loop subcat(0,0,0,$siteid) $r} {php $num++} <h3><a href="{$r[url]}">{$r[catna ...
- C# 当double数值较大且小数位过多时转化成字符串并保留小数位
今天在C#中碰到了一个问题,需要将double转换成字符串显示,要求保留小数位. 在网上查询了一下相关的文章 具体如下: double temp=3.1415926; (F)Fixed point:s ...
- centos下Elasticsearch数据迁移与备份
########### ### 共享创建es官方网站就一句话 ######## 1.下载 文件共享 .. rpm -i http://mirror.symnds.com/distributions ...
- MySQL 执行计划explain详解
MySQL 执行计划explain详解 2015-08-10 13:56:27 分类: MySQL explain命令是查看查询优化器如何决定执行查询的主要方法.这个功能有局限性,并不总会说出真相,但 ...
- 【译】UI设计基础(UI Design Basics)--自动适配与布局(Adaptivity and Layout)(四)
2.3 自动适配与布局(Adaptivity and Layout) 2.3.1 开发成自动适配(Build In Adaptivity) 用户通常希望在自己的所有设备,各种场景中使用他们喜欢的a ...