码迷,mamicode.com
首页 > 其他好文 > 详细

Cocos2d-x结构学习(十七)CCSkeletonAnimation、CCSkeleton、AnimationState、AnimationState、SkeletonData

时间:2015-03-28 17:22:20      阅读:535      评论:0      收藏:0      [点我收藏+]

标签:cocos2d   c++   编程   手游开发   游戏开发   

1、CCSkeletonAnimation:继承自CCSkeleton,骨骼动画类

class CC_EX_DLL CCSkeletonAnimation: public CCSkeleton {
public:
	std::vector<AnimationState*> states;     //状态容器

	static CCSkeletonAnimation* createWithData (SkeletonData* skeletonData);           //相关创建函数
	static CCSkeletonAnimation* createWithFile (const char* skeletonDataFile, Atlas* atlas, float scale = 1);
	static CCSkeletonAnimation* createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale = 1);

	CCSkeletonAnimation (SkeletonData* skeletonData);
	CCSkeletonAnimation (const char* skeletonDataFile, Atlas* atlas, float scale = 1);
	CCSkeletonAnimation (const char* skeletonDataFile, const char* atlasFile, float scale = 1);

	virtual ~CCSkeletonAnimation ();

	virtual void update (float deltaTime);

	void addAnimationState (AnimationStateData* stateData = 0);                                      //两个添加状态函数
	void setAnimationStateData (AnimationStateData* stateData, int stateIndex = 0);
	void setMix (const char* fromAnimation, const char* toAnimation, float duration, int stateIndex = 0);
	void setAnimation (const char* name, bool loop, int stateIndex = 0);                                 //设置动画
	void addAnimation (const char* name, bool loop, float delay = 0, int stateIndex = 0);              //添加
	void clearAnimation (int stateIndex = 0);                                                    //清除

protected:
	CCSkeletonAnimation ();
private:
	typedef CCSkeleton super;
	std::vector<AnimationStateData*> stateDatas;
	void initialize ();
};
2、CCSkeleton:继承自CCNodeRGBA和CCBlendProtocol,骨骼处理类
class CC_EX_DLL CCSkeleton: public cocos2d::CCNodeRGBA, public cocos2d::CCBlendProtocol {
public:
	Skeleton* skeleton;
	Bone* rootBone;
	float timeScale;
	bool debugSlots;
	bool debugBones;
	bool premultipliedAlpha;

	static CCSkeleton* createWithData (SkeletonData* skeletonData, bool ownsSkeletonData = false);
	static CCSkeleton* createWithFile (const char* skeletonDataFile, Atlas* atlas, float scale = 1);
	static CCSkeleton* createWithFile (const char* skeletonDataFile, const char* atlasFile, float scale = 1);

	CCSkeleton (SkeletonData* skeletonData, bool ownsSkeletonData = false);
	CCSkeleton (const char* skeletonDataFile, Atlas* atlas, float scale = 1);
	CCSkeleton (const char* skeletonDataFile, const char* atlasFile, float scale = 1);

	virtual ~CCSkeleton ();

	virtual void update (float deltaTime);                 //更新
	virtual void draw ();                               //绘制
	virtual cocos2d::CCRect boundingBox ();               //获得包围体

	void updateWorldTransform ();                           //更新世界变换

	void setToSetupPose ();
	void setBonesToSetupPose ();
	void setSlotsToSetupPose ();

	Bone* findBone (const char* boneName) const;            //查找骨骼
	Slot* findSlot (const char* slotName) const;

	bool setSkin (const char* skinName);                      //设置皮肤
	
	Attachment* getAttachment (const char* slotName, const char* attachmentName) const;
	bool setAttachment (const char* slotName, const char* attachmentName);

	CC_PROPERTY(cocos2d::ccBlendFunc, blendFunc, BlendFunc);
	virtual void setOpacityModifyRGB (bool value);
	virtual bool isOpacityModifyRGB ();
protected:
	CCSkeleton ();
	void setSkeletonData (SkeletonData* skeletonData, bool ownsSkeletonData);
	cocos2d::CCTextureAtlas* getTextureAtlas (RegionAttachment* regionAttachment) const;
private:
	bool ownsSkeletonData;
	Atlas* atlas;
	void initialize ();
};
3、AnimationState:动画状态结构体

typedef struct {
	AnimationStateData* const data;
	Animation* const animation;
	float time;
	int/*bool*/loop;
} AnimationState;
4、AnimationStateData:动画数据结构体

typedef struct {
	SkeletonData* const skeletonData;
	const void* const entries;
} AnimationStateData;
5、SkeletonData:骨骼数据结构体
typedef struct {
	int boneCount;
	BoneData** bones;

	int slotCount;
	SlotData** slots;

	int skinCount;
	Skin** skins;
	Skin* defaultSkin;

	int animationCount;
	Animation** animations;
} SkeletonData;




Cocos2d-x结构学习(十七)CCSkeletonAnimation、CCSkeleton、AnimationState、AnimationState、SkeletonData

标签:cocos2d   c++   编程   手游开发   游戏开发   

原文地址:http://blog.csdn.net/a809146548/article/details/44702477

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!