《Cocos2d学习之路》一,前序和闹钟

转载请说明出处:http://blog.csdn.net/lsmfeixiang/article/details/42213929


github地址:https://github.com/teffy/cocos2dx


这是一篇我个人在EOE发的blog《《Cocos2d学习之路》一,前序和闹钟》,由于eoe的blog系统实在是无言以对,我就把eoe上面的帖子以及blog是都转到csdn上来,原文地址:http://www.eoeandroid.com/blog-781265-51452.html


本人做Android三年时间了,一直以来都有想学一下怎么做游戏的想法,最近终于是抽出时间,也每天坚持着在学习。

开始也不知道有什么游戏引擎,去年就了解过Andengine,现在叫OrangeEngine,也知道cocos2d,unity3d(还有其他引擎,但是我不怎么知道),前段时间真正开始学习的时候,还是选择了cocos2d。原因如下:
一,我对比了这三个引擎的开发语言, OGE是基于java的,当然这个是最熟悉的了,cocos2d基于c++,c,lua,js,ios-oc,unity3d基于C#(这个我真的没去了解过,只是听我同事说的,他之前搞过),而且我最近在学习c++,看C++的视频;
二是跨平台性, cocos2d,unity3d当然支持全平台了,而OGE呢,说是要支持全平台,但是到目前为止,只支持android和ios;
三是在前俩原因的基础上,自然舍弃了unity3d(当然以后还是想去学习一下),然后还是比较熟悉java就去试着看了下oge,照着官方资料学习了一下,很是蛋疼,而且官方资料和新版本api不太一致,当然是有源码,但是我没那精力去研究一遍源码;同时也在cocos2d,环境配置也是把我折磨的死去活来的,也是因为我太想用官方的那个组合套装,最后还是用各种散件,然后配置搞定环境的,然后按照官方的教程写了第一个Demo。

总结一下:
1、我的环境是:win7/8(公司电脑win7,家里电脑win8),64位,cocos2d 3.3final,vs2013,eclipse4.2+adt+cdt+sdk+ndkr9d(这一套就可以直接在Eclipse里面run as了,不用先去\proj.android下面执行python build_native.py然后再导入Eclipse)
2、先花了三四天的时间看cocos2d官方的文档( http://cn.cocos2d-x.org/article/ ),从头看到尾,同时也把环境折腾起来,运行一个最经典的程序----Hello World
3、看教程了解CocosStudio的基本使用, http://cn.cocos2d-x.org/tutorial/show?id=1649
跟着教程写Code,同时总结了遇到的问题:
 1)、获取系统时间的code要换成下面 code,其他环境不确定,自行百度 
struct tm *tm;
time_t timep;
time(&timep);
tm = localtime(&timep);
hour = tm->tm_hour;
minute = tm->tm_min;
second = tm->tm_sec;
2)、schedule_selector(ClockBackgroundScene::updateTime),updateTime的定义,参数不能为空,要定义为ClockBackgroundScene::updateTime(float t) 
3)、CCLog要换成log

ndk一定得是r9d版本
项目工程不要放在带有空格的路径
我是使用先vs写code,在pc上验证,然后Eclipse导入验证下就ok了,其他平台暂时没设备和条件,就不验证了吧
使用Eclipse直接Run as的时候可能会报C++文件 undefined reference to `XX'异常,可以参考http://blog.csdn.net/gf771115/article/details/34414449这里,解决,然后可以把:\Cocos\cocos2d-x-3.3\templates\cpp-template-default\proj.android\jni下的Android.mk按照 这个来修改配置,以后再新建项目就不用管了,当然也可以使用python编译,然后再导入运行

最后放一张手机上运行的截图,电脑上的就不截了,还得编译老一会时间


今天到这里了,后面再有进度了,会慢慢的更新上,一点一点记录下我的学习之路。也请高手大牛来指导提携一下,谢谢


点击下载代码


重新看code,发现CREATE_FUNC这个宏没看明白啥意思,百度了下,看明白,搜索结果如下:

  /**
     * define a create function for a specific type, such as CCLayer
     * @__TYPE__ class type to add create(), such as CCLayer
     */
    #define CREATE_FUNC(__TYPE__)
    static __TYPE__* create()
    {
        __TYPE__ *pRet = new __TYPE__();
        if (pRet && pRet->init())
        {
            pRet->autorelease();
            return pRet;
        }
        else
        {
            delete pRet;
            pRet = NULL;
            return NULL;
        }
    }  


注释中写的很明确,为一个类似CCLayer类的特定的类增加一个create函数.我们也可以看到在宏的下面定义了一个create()函数返回的类型就是宏带入的参数__TYPE__指针类型.那create函数里做了什么呢?它执行了类的构造函数,执行了init()初始化函数,最后又设置创建出的对象为自动释放内存.这样其他人在使用这个类的时候,只要是用create()函数创建出来的对象就不用费心去管理释放内存了.

所以我们的code里面定义了一个virtual init函数
另外 USING_NS_CC查看定义  #define USING_NS_CC                     using namespace cocos2d,加上cocos2d的命名空间

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值