新的记录果然从周一开始

        这周开始分享cocos2d-x。

        才刚刚开始学习cocos2d,因为我是搞iPhone端的,一直在纠结于使用cocos2d-x还是cocos2d-iPhone,不过,最终还是cocos2d-x的跨平台性打破了我心中的天平。

        原文:http://blog.csdn.net/fengshiguang_shang/article/details/20902921    http://www.cnblogs.com/JoProgrammer/p/3591787.html

        首先,我是用的cocos2d-x3.0和cocos2d-iPhone3.0。实话来说,这两个引擎虽然是同一系统,但是使用的数据类型和方法还是有很大偏颇的,比如cocos2d-x的初始化方式一般都是Node::create(...),而cocos2d-iPhone的初始化方式仍然在使用Node::init...(...),并且数据类型的名称都不一样,比如:Array的类型在cocos2d-x上定义为__Array,而cocos2d-iPhone上则编写了OC中NSArray的一个类别。

        不过这些不同都是大同小异,只是同一引擎的不同外在表现方式,不过个人感觉,cocos2d-x正处在更新的前端,比如:新的3.0版本,它的触摸机制也就是大家说的点击交互,直接使用了EventDispatcher,这个东西按字面意思来讲就已经很清楚了:事件调度。那么,为什么要把之前的onTouchesBegan()... ...呢?个人见解:是因为新的触摸机制可以作用在一个节点上,避免了Layer的冗杂查找换算;而且作为事件调度,它对事件进行的是监听处理的,除了老版引擎中的监听好处外,EventDispatcher拥有更多的好处,再比如:当你游戏完成了,覆盖了一个半透明Layer(你并不想移除之前的游戏界面)那么,在新的Layer中你也可以对游戏界面Layer中的触摸机制进行控制:removeEventListener,比如你要设置了全局属性的EventDispatcher变量,那么你还能够进行一些新的处理。
        引用:http://blog.csdn.net/eric_XJJ/article/details/18180091

        看完了这些东西,先喝点饮料,白开水什么的,最好不要抽烟,也不要吃东西,休息1-2分钟,然后咱们开始看cocos2d-x的代码部分。



        首先,我们新建了一个项目,不会新建项目的同学在实际练习的时候请参照上边的引用链接,暂时咱们往下看就可以了。
        使用编程工具打开我们的项目,首先看到在Classes文件夹中的都是我们游戏的一些主要类了,其他的我就不一一介绍了。打开classes文件夹,里边有两个类,AppDelegate和HelloWorldScene。

        首先我们先打开AppDelegate。

下边我是先添加的代码后添加的注释,主要原因就是想写乱一点,凑合能看下去就行,不要把这些东西直接复制粘贴。经过前人证明,这样效果不好,最好形成自己的理解,再写在自己独立的一个小本本,小博客中。

using namespace CocosDenshion;//首先这里的CocosDenshion首先告诉你是个命名空间,我们打开进去能看到整个命名空间只有一个标示符SimpleAudioEngine,只有一个标示符被定义在CocosDenshion命名空间中,那么这个命名空间的声明,是为了让你能够使用SimpleAudioEngine。

USING_NS_CC;

AppDelegate::AppDelegate()
{
}

AppDelegate::~AppDelegate()
{
    SimpleAudioEngine::end();//当我们点击进入CocosDenshion命名空间的时候,首先看到SimpleAudioEngine的介绍其中就包括@note确保调用SimpleAudioEngine:结束()当声音引擎不需要了,所以这个方法是必须的。
}
bool AppDelegate::applicationDidFinishLaunching()
{
    // initialize director
    Director *pDirector = Director::getInstance();//这个就是大家常提到的,导演。没听说过的也不要紧,因为不管是在这个博客,还是在别人的博客,一般都这么叫的。那么导演能够做什么呢?导演嘛,你只要知道就像生活中各个导演一样,能够执行更换演员,换场地,获得各种数据就可以了。
    EGLView *pEGLView = EGLView::getInstance();//点击进去并没有说明,我们看导演中关于下一句的说明:Get the EGLView, where everything is rendered获得EGLView一切会被呈现。到这里,大家应该明白了,EGLView是一个和绘制有关的类,点击进去看到基类是CCEGLViewProtocol,看看基类的方法,终于明白EGLView这个和绘制有关的类包括了创建窗口和触摸事件处理,那么,大家可以叫它镜头
    pDirector->setOpenGLView(pEGLView);//导演设置镜头,大家可以看到有个OpenGL字样,大家需要知道OpenGL是个跨平台图像编程接口的规格。
    
    //	pEGLView->setDesignResolutionSize(720, 1280, kResolutionShowAll);

    // turn on display FPS
    pDirector->setDisplayStats(true);//显示每秒帧数,适用于测试

    // set FPS. the default value is 1.0/60 if you don't call this
    pDirector->setAnimationInterval(1.0 / 60);//设置每秒帧数

    // create a scene. it's an autorelease object
    Scene *pScene = HelloWorldScene::scene();//一个场景

    // run
    pDirector->runWithScene(pScene);//运行场景
    return true;
}

// This function will be called when the app is inactive. When comes a phone call,it's be invoked too
void AppDelegate::applicationDidEnterBackground()
{
    Director::getInstance()->stopAnimation();//停止动画效果

    SimpleAudioEngine::getInstance()->pauseBackgroundMusic();//暂停背景音乐
}

// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground()
{
    Director::getInstance()->startAnimation();//开始动画效果

    SimpleAudioEngine::getInstance()->resumeBackgroundMusic();//继续背景音乐
}


        然后大家打开HellowWorldScene类,会一些C++代码的应该会对此很熟悉,不太会的可以看注释,很详尽,也很简单,我这就不把代码粘过来了,只说说一些要注意的地方。

        Point::ZERO,代表(0,0)和Point()一样。

        CC_CALLBACK_...这个函数,如果是0那么没有返回参数,如果是1那么有一个返回参数,依次类推。

        addChild(Node *child, int zOrder,int tag)    child:节点   zOrder:z轴层级,>0的整数,0为z轴最底层  tag:标示数字,用来查找节点

        

       



****************************************************************************************************************************

作业:在HellowWorldScene里边创建一些节点,比如图片、按钮、文字什么的。

            *为按钮写一些触发方法,在后台输出文字(选作)

            **练习触控机制,比如,点击屏幕,后台输出文字什么的(选作)

预习:下次更新估计要放在周三了,会讲一些小的动作,会讲一下触控机制。

注意:菜单按钮触发方法,如果不会的自己一定要弄懂,这次不做以后有时间也要弄懂,我是不会在文档里说的,当做是提高练习。多练一练各种菜单按钮吧!

****************************************************************************************************************************

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值