喵星战争(二):主角登场

来源:互联网 发布:linux wget命令 编辑:程序博客网 时间:2024/05/16 06:58

      主角虽然是只小猫,但为了体现动画的效果,将其分为四部分:主体、左手、右手和尾巴。其中主体部分的动画由三张图片构成,三张的明暗不同,在连续播放的时候就有了闪动效果;小猫向不同的方向移动手臂会有“上扬”的动作,这个效果通过图片的垂直镜像获得;尾巴部分通过旋转动作让它如同座钟摆一样左右摆动。由此,一个带有动画的主角就构造成功了,现在我们就按照上述描述构造主角小猫的类定义文件"GameObjHero"如下:

 

#ifndef _GAME_OBJ_HERO_H_#endif _GAME_OBJ_HERO_H_#include "cocos2d.h"using namespace cocos2d;class GameObjHero:public CCNode , public CCTargetedTouchDelegate{public:CCSprite* lefthand;//左手CCSprite* righthand;//右手CCPoint offset;//触摸偏移位置bool iscontrol;//是否在控制主角GameObjHero(void);virtual ~GameObjHero(void);void releasebullet();//释放子弹CCRect rect();virtual void onEnter();virtual void onExit();//触摸相关bool containsTouchLocation(CCTouch* touch);virtual bool ccTouchBegan(CCTouch* touch ,CCEvent* event);virtual bool ccTouchMoved(CCTouch* touch ,CCEvent* event);virtual bool ccTouchEnded(CCTouch* touch ,CCEvent* event);virtual void touchDelegateRetain();virtual void touchDelegateRelease();};#endif


知识点:

1.CCTargetedTouchDelegate类:

触摸协议,让主角可以接受用户的触摸信息。

中文官网上是这样解释这个类的:

使用这种类型的委托结果在两个好处:

 1>你不需要处理CCSet(CCSet是作者对标准C  模板库(STL)中集合(std::Set)的一次封装,方便使用) ,调度员自动分配他们。你每次回调获得相应的UITouch。

 2>ccTouchBegan返回YES,您可以*获取*一个UITouch 。Touches的更新只会发送给相关联的委托。 所以,如果你处理move/ ended/cancelled事件的更新,你可以确定这是要处理的触摸事件。 这可以让你在处理多点触摸时节省很多检查。 (有了TargetedTouchDelegate涉及到target的处理程序的handler,不需要处理其他的Handlders。 )

其类成员函数有如下:

  • virtual bool    ccTouchBegan   (CCTouch *pTouch,CCEvent *pEvent)
  • virtual void    ccTouchMoved   (CCTouch *pTouch,CCEvent *pEvent)
  • virtual void    ccTouchEnded   (CCTouch *pTouch,CCEvent *pEvent)
  • virtual void    ccTouchCancelled   (CCTouch *pTouch,CCEvent *pEvent)

    这应该很容易从字面上理解,我就不赘述了。

    2.containsTouchLocation:这个函数就看看我们的触摸点是否在sprite中。

    3.CCTouch:它封装了触摸点,可以通过locationInView函数返回一个CCPoint。

    4.CCEvent:他封装了各种事件,这里是指触摸发生的相应事件。

     

     

    ps:该文章内容多出自于《Cocos2d-x权威指南》,详情请自行购买查阅。

    附上Touch事件机制的详细说明文章:

    http://blog.csdn.net/ym19860303/article/details/8477567

  • 原创粉丝点击