原本想把这篇文章命名为《cocos2d-x数据结构基础》…后来想想,“数据结构”这个词对于很多新手这个标题很吓人的~!数据结构!!究竟是嘛玩意啊!!其实我倒觉得,这个名词的发明者唐纳德·克努特也是不得已而为之起了这么一个抽象的名字,因为他那个年代(1968年)的计算机还是只能处理数据的家伙,多媒体?那时候的计算机只能读纸片呢~~所以我们只好原谅他了~不过我们今天既然讲的是cocos2d-x,所以我们可以举一些更有意思的例子。
大家应该都进过仓库,各种各样的仓库,放工具的,放原材料的,放书的..(好吧..那是图书馆)。我对仓库的定义就是:放东西的地方。
好吧,肯定有同学会认为我这句话属于脱裤子放屁——菊花紧啊。但是大家想过一个问题没有,如果你去一个仓库找东西,你会如何做呢?大家可以假装自己是一个程序,模仿一下命令行输出调试信息,例如我的方式是:
进入仓库;
随机找一个方向;
随机行走一定距离;
随机抓取一个东西;
查看是否是我需要的;
如果是,则结束;
如果不是,重新开始;
大家对我这种找东西的方式有何想法呢?99%的同学会认为我是白痴,1%的同学则会认为我的脑子里有一坨刘翔。
那正确的方式呢?大家可以回想一下自己去图书馆找C++ primer时候的流程:
进入图书馆;
寻找计算机书籍(第一层);
找到计算机书籍,再找编程语言(第二层);
找到编程语言,从头开始找;
找到《C++ primer》,结束;
现在大家发挥一下自己的绘画才能,绘制一下这个图书馆书籍的分类情况
搞定。
这个图画的非常丑,因为Mac上的Word做的非常烂,可我手头上只能用这个画,所以大家稍微忍一下。
接下来呢,我们要在编程语言下面增加一门Python语言,然后图就变成了这样。
这种结构,我们称之为“树状结构”,因为它从根(图书馆)开始,像树杈一样展开,每一个类别同时又被称为“节点”。
接下来!!!我们终于要进入Cocos2d-x的世界看看它放东西的规则是什么样子的!!!!
………………………….
你一定在想..这TM的都是啥?(友情提示Node的中文意思是“节点”)
不过下面这张图,会让你稍微感觉好一些。
其实这里面的CCScene CCLayerCCLabel CCSprite 还是没出现的CCMenu…..等等等等一些类,都是CCNode的子类,都继承了他们共同的爹CCNode的一个能力,这个能力就是“形成树状结构”。
大家回想一下helloworld中遇到的例子:
bool HelloworldScene:: init()
{
//…..Do something
//HelloWorldScene继承自CCLayer,是CCNode的孙子
//mysprite是CCSprite类,也是CCNode的孙子
this->addchild(mysprite);
}
上述语句中的addchild() 翻译成中文就是“加孩子()”,“加孩子“就是CCNode类的特殊能力,所有他的孩子都会。
而上例中的this代表的是HelloWorldScene,下面两张图是执行addchild前后。
addchild执行前
addchild执行后:
困死了,碎觉,明天再写