CCAnimation源码解析
来源:互联网 发布:ise女装官网淘宝网 编辑:程序博客网 时间:2024/06/16 04:13
帧动画:
源码:
/** @class AnimationFrame * * A frame of the animation. It contains information like: * - sprite frame name. * - # of delay units. * - offset @since v2.0 */ /// 帧动画class CC_DLL AnimationFrame : public Ref, public Clonable{public: /** @struct DisplayedEventInfo * When the animation display,Dispatches the event of UserData. */ /// 显示事件信息: /// 当动画显示时,发送的事件列表 struct DisplayedEventInfo { Node* target; const ValueMap* userInfo; }; /** * Creates the animation frame with a spriteframe, number of delay units and a notification user info. * * @param spriteFrame The animation frame with a spriteframe. * @param delayUnits Number of delay units. * @param userInfo A notification user info. * @since 3.0 /// 创建一个帧动画 */ static AnimationFrame* create(SpriteFrame* spriteFrame, float delayUnits, const ValueMap& userInfo); /** Return a SpriteFrameName to be used. * * @return a SpriteFrameName to be used. */ /// 返回一个使用的帧 SpriteFrame* getSpriteFrame() const { return _spriteFrame; }; /** Set the SpriteFrame. * * @param frame A SpriteFrame will be used. */ /// 设置一个使用的帧 void setSpriteFrame(SpriteFrame* frame) { CC_SAFE_RETAIN(frame); CC_SAFE_RELEASE(_spriteFrame); _spriteFrame = frame; } /** Gets the units of time the frame takes. * * @return The units of time the frame takes. */ /// 获取播放一帧需要的单位时间 float getDelayUnits() const { return _delayUnits; }; /** Sets the units of time the frame takes. * * @param delayUnits The units of time the frame takes. */ /// 设置播放一帧需要的单位时间 void setDelayUnits(float delayUnits) { _delayUnits = delayUnits; }; /** @brief Gets user infomation * A AnimationFrameDisplayedNotification notification will be broadcast when the frame is displayed with this dictionary as UserInfo. * If UserInfo is nil, then no notification will be broadcast. * * @return A dictionary as UserInfo */ /// 获取用户的信息 /// 一个帧动画显示通知将被广播,当帧用这个字典当作信息显示的时候 const ValueMap& getUserInfo() const { return _userInfo; }; ValueMap& getUserInfo() { return _userInfo; }; /** Sets user infomation. * @param userInfo A dictionary as UserInfo. */ /// 设置用户信息 void setUserInfo(const ValueMap& userInfo) { _userInfo = userInfo; } // Overridesvirtual AnimationFrame *clone() const override; CC_CONSTRUCTOR_ACCESS: /** * @js ctor */ AnimationFrame(); /** * @js NA * @lua NA */ virtual ~AnimationFrame(); /** initializes the animation frame with a spriteframe, number of delay units and a notification user info *//// 初始化 bool initWithSpriteFrame(SpriteFrame* spriteFrame, float delayUnits, const ValueMap& userInfo);protected: /** SpriteFrameName to be used */ SpriteFrame* _spriteFrame; /** how many units of time the frame takes */ float _delayUnits; /** A AnimationFrameDisplayedNotification notification will be broadcast when the frame is displayed with this dictionary as UserInfo. If UserInfo is nil, then no notification will be broadcast. */ ValueMap _userInfo; private: CC_DISALLOW_COPY_AND_ASSIGN(AnimationFrame);};/** @class Animation * A Animation object is used to perform animations on the Sprite objects. * The Animation object contains AnimationFrame objects, and a possible delay between the frames. * You can animate a Animation object by using the Animate action. Example: * @code * sprite->runAction(Animate::create(animation)); * @endcode*//// 动画/// 一个动画动作是用来执行精灵上的动画的/// 这个动画对新昂宝航动画帧,和两帧之间的时间间隔/// 你可以播放一个动画对象使用动画动作class CC_DLL Animation : public Ref, public Clonable{public: /** Creates an animation. * @since v0.99.5 */ /// 创建一个动画动作 static Animation* create(void); /* Creates an animation with an array of SpriteFrame and a delay between frames in seconds. * The frames will be added with one "delay unit". * @since v0.99.5 * @param arrayOfSpriteFrameNames An array of SpriteFrame. * @param delay A delay between frames in seconds. * @param loops The times the animation is going to loop. */ /// 创建帧动画动作 static Animation* createWithSpriteFrames(const Vector<SpriteFrame*>& arrayOfSpriteFrameNames, float delay = 0.0f, unsigned int loops = 1); /* Creates an animation with an array of AnimationFrame, the delay per units in seconds and and how many times it should be executed. * @since v2.0 * @param arrayOfAnimationFrameNames An animation with an array of AnimationFrame. * @param delayPerUnit The delay per units in seconds and and how many times it should be executed. * @param loops The times the animation is going to loop. */ static Animation* create(const Vector<AnimationFrame*>& arrayOfAnimationFrameNames, float delayPerUnit, unsigned int loops = 1); /** Adds a SpriteFrame to a Animation. * * @param frame The frame will be added with one "delay unit". */ /// 添加动画帧 void addSpriteFrame(SpriteFrame *frame); /** Adds a frame with an image filename. Internally it will create a SpriteFrame and it will add it. * The frame will be added with one "delay unit". * Added to facilitate the migration from v0.8 to v0.9. * @param filename The path of SpriteFrame. */ /// 将文件中的图片添加为动画帧 void addSpriteFrameWithFile(const std::string& filename); /** * @deprecated. Use addSpriteFrameWithFile() instead. @js NA */ CC_DEPRECATED_ATTRIBUTE void addSpriteFrameWithFileName(const std::string& filename){ addSpriteFrameWithFile(filename);} /** Adds a frame with a texture and a rect. Internally it will create a SpriteFrame and it will add it. * The frame will be added with one "delay unit". * Added to facilitate the migration from v0.8 to v0.9. * @param pobTexture A frame with a texture. * @param rect The Texture of rect. */ /// 从texture中添加动画帧 void addSpriteFrameWithTexture(Texture2D* pobTexture, const Rect& rect); /** Gets the total Delay units of the Animation. * * @return The total Delay units of the Animation. */ /// 获取动画的总延迟单元。 float getTotalDelayUnits() const { return _totalDelayUnits; }; /** Sets the delay in seconds of the "delay unit". * * @param delayPerUnit The delay in seconds of the "delay unit". */ /// 设置每个动画帧的延迟单元 void setDelayPerUnit(float delayPerUnit) { _delayPerUnit = delayPerUnit; }; /** Gets the delay in seconds of the "delay unit". * * @return The delay in seconds of the "delay unit". */ /// 得到每个动画帧的延迟单元 float getDelayPerUnit() const { return _delayPerUnit; }; /** Gets the duration in seconds of the whole animation. It is the result of totalDelayUnits * delayPerUnit. * * @return Result of totalDelayUnits * delayPerUnit. */ /// 得到动画的持续时间 float getDuration() const; /** Gets the array of AnimationFrames. * * @return The array of AnimationFrames. */ /// 得到动画的帧 const Vector<AnimationFrame*>& getFrames() const { return _frames; }; /** Sets the array of AnimationFrames. * * @param frames The array of AnimationFrames. */ /// 设置动画的帧 void setFrames(const Vector<AnimationFrame*>& frames) { _frames = frames; } /** Checks whether to restore the original frame when animation finishes. * * @return Restore the original frame when animation finishes. */ /// 是否复原原始帧(第一帧) bool getRestoreOriginalFrame() const { return _restoreOriginalFrame; }; /** Sets whether to restore the original frame when animation finishes. * * @param restoreOriginalFrame Whether to restore the original frame when animation finishes. */ /// 设置是否复原第一帧 void setRestoreOriginalFrame(bool restoreOriginalFrame) { _restoreOriginalFrame = restoreOriginalFrame; }; /** Gets the times the animation is going to loop. 0 means animation is not animated. 1, animation is executed one time, ... * * @return The times the animation is going to loop. */ /// 返回重复次数 unsigned int getLoops() const { return _loops; }; /** Sets the times the animation is going to loop. 0 means animation is not animated. 1, animation is executed one time, ... * * @param loops The times the animation is going to loop. */ /// 设置重复次数 void setLoops(unsigned int loops) { _loops = loops; }; // overridesvirtual Animation *clone() const override; CC_CONSTRUCTOR_ACCESS: Animation(); virtual ~Animation(void); /** Initializes a Animation. *//// 初始化 bool init(); /** Initializes a Animation with frames and a delay between frames. * @since v0.99.5 */ /// 通过帧初始化 bool initWithSpriteFrames(const Vector<SpriteFrame*>& arrayOfSpriteFrameNames, float delay = 0.0f, unsigned int loops = 1); /** Initializes a Animation with AnimationFrame. * @since v2.0 */ bool initWithAnimationFrames(const Vector<AnimationFrame*>& arrayOfAnimationFrameNames, float delayPerUnit, unsigned int loops);protected: /** total Delay units of the Animation. */ float _totalDelayUnits; /** Delay in seconds of the "delay unit". */ float _delayPerUnit; /** duration in seconds of the whole animation. It is the result of totalDelayUnits * delayPerUnit. */ float _duration; /** array of AnimationFrames. */ Vector<AnimationFrame*> _frames; /** whether or not it shall restore the original frame when the animation finishes. */ bool _restoreOriginalFrame; /** how many times the animation is going to loop. 0 means animation is not animated. 1, animation is executed one time, ... */ unsigned int _loops; private: CC_DISALLOW_COPY_AND_ASSIGN(Animation);};// end of sprite_nodes group/// @}
0 0
- CCAnimation源码解析
- CCAnimation(CCAnimationFrame:m_fDelayUnits m_pUserInfo。 CCAnimation:)
- 创建 和使用 CCAnimation
- CCSpriteSheet及CCAnimation
- CCAnimation 和 CCAnimate 区别
- CCAnimate和CCAnimation区别
- CCAction与CCAnimation
- CCAnimation类 参考
- CCAnimation创建动画
- cocos2d-x -CCSpriteFrameCache-CCAnimation
- CCSpriteFrame 、CCAnimation 的使用
- cocos2dX 之CCAnimation/CCAnimate
- cocos2d-x 动画CCAnimation
- ccanimation学习笔记
- 源码解析
- 源码解析
- 自定义精灵类并为你的精灵设置攻击帧(指定开始帧)以及扩展Cocos2d源码的CCAnimation简化动画创建
- 剖析cocos2d-x中的CCAnimation: 从CCTexture2D到CCAnimation
- 文章标题
- 为自己而留的
- Java- Lambda表达式
- Codeforces Round #317 [AimFund Thanks-Round] (Div. 1) B
- hdu 2255 奔小康赚大钱(完美最大权匹配 KM算法)
- CCAnimation源码解析
- 基于opencv的神经网络算法实现两类分类问题的可视化演示
- HDU 1997 汉诺塔VII(递归)
- 使用不带头结点的循环链表实现队列(数据结构)
- QTcpSocket 编程
- Linux 操作系统下如何优雅的卸载软件
- MySQL 插入数据时,中文乱码问题的解决
- [C++11 并发编程] 10 - 对极少修改的数据进行保护
- 《HTTP权威指南》阅读笔记(三)