cocos2dx 学习笔记(4) --《万圣节大作战》项目分析(1)

  代码是别人写的,我这里只是拿来学习基本知识,技术都是在实战中锻炼出来的,因为你最后还是去做,而不是学。

  首先提供我上传到github的地址:https://github.com/RoyBirds/MyGame

 

      看别人代码,首先看Appdelegate.cpp文件,看主界面是哪一个,然后一步一步看下去:

     

    auto scene = InkmooFlash::createScene();

    // run
    director->runWithScene(scene);

   这里明显看到是又InkmooFlash来执行的,简单看了下InkmooFlash文件,是一个开始Flash画面,提示出一个工作室。

      Appdelegate里面有一些初始化:比如资源路径,屏幕适应方案,音乐预导入等等,自己慢慢看,我就不进行粘贴代码了。

      然后跟进InkmooFlash文件,看见进入MainSence类,这是主界面了。这里主要学习的是MenuItemImage类,这个类主要是用来做主界面的选择按钮的,该类的create函数如下:

/*******
 normalImage 默认图片路径
 selectedImage 选中之后图片路径
 disabledImage 禁止的图片显示路径PS:就是这个按钮不能使用的时候的图片
 target  大家都懂的
 selector  回调函数指针
*********/

static MenuItemImage* create(const std::string& normalImage, const std::string& selectedImage, const std::string& disabledImage, Ref* target, SEL_MenuHandler selector);

     Layer 的两个virtual函数的实现:onExitTransitionDidStart()、onEnterTransitionDidFinish(),使用xcode看代码注释即可知道两个函数的作用。

    主界面可以进入的两个界面一个是 游戏界面GameSence、一个是设置界面Devloper,后者我们就不详谈了,关于GameSence:主要分为几个部分,我们也按程序进程走下去:

 

   直接看Init()函数:

  

 SpriteFrameCache::getInstance()->addSpriteFramesWithFile("icon.plist");
 spriteSheet = SpriteBatchNode::create("icon.png");
 addChild(spriteSheet);

 initMap();
 scheduleUpdate();
 schedule(schedule_selector(GameScene::myClock),1.0f );


 auto touchListener = EventListenerTouchOneByOne::create();
 touchListener->onTouchBegan = CC_CALLBACK_2(GameScene::onTouchBegan, this);
 touchListener->onTouchMoved = CC_CALLBACK_2(GameScene::onTouchMoved, this);
 _eventDispatcher->addEventListenerWithSceneGraphPriority(touchListener, this);

   前面的都是些建标签等等东西,我这里就不讲了,这几行才是精华部分。首先是SpriteFrameCache类,该类的介绍链接如下:http://api.cocos.com/cn/d7/d76/classcocos2d_1_1_sprite_frame_cache.html,是用来缓存数据的,缓存之后调用速

度会变快,类似于ios的NSCache功能。

     然后initMap(),初始化3消的方阵,其中里面有一个封装好的SpriteShape类,赞!

     cocos2dx的记时器scheduleUpdate(); 每秒做一个事情。

    手指触摸事件的绑定,目前除了以上两种事件还有:

      onTouchBegan   手指触摸开始事件,指手指刚开始触摸到的事件

  onTouchMoved   手指移动事件,手指在上面滑动的事件

  onTouchCancelled  手指取消事件,譬如移除监听范围

    onTouchEnded    手指结束事件

 

 

      今天到此为止。

 

     

 

   

 

posted @ 2015-07-06 13:23  _Roy  阅读(564)  评论(0编辑  收藏  举报