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

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;

时间: 2024-10-10 16:07:48

Cocos2d-x结构学习(十七)CCSkeletonAnimation、CCSkeleton、AnimationState、AnimationState、SkeletonData的相关文章

2014年7月17日学习笔记--PHP的循环结构学习

今天重新开始学习PHP, 为了学习PHP买了书,但书是一本大部头的书,不好带一直没有好好学习,我决定把书拆了分章来看,这样也方便带 也可以很快完成任务. 今天在linux mint 17上安装了lnmp 环境 和brackets工具,来学PHP,小的例子用vim来完成的. 记录一下自己美化的九九乘法表 代码如下: <?php     for($i=1;$i<=9;$i++){         for($j=1;$j<=9;$j++){             if($i>=$j){

实验五——循环结构学习总结

本次课学习到的知识点: (1)循环结构有四要素:循环初始化,循环条件,循环体,循环变量修改. (2)for语句和while语句都是在循环前先判断条件,只有条件满足才会进入循环,而do-while语句先执行循环体,后判断循环条件. (3)continue语句和break语句 2.实验过程中遇到的问题及解决方法: 分不清什么时候用for语句,什么时候用while语句,什么时候用do-while语句. 3. 实验心得体会及本章学习总结 用于循环的语句主要有for语句,while语句,do-while语

实验五-循环结构学习总结

本次课学习到的知识点:1.(1)循环结构四要素:循环初始化,循环条件,循环体,循环变量修改 (2)do-while语句的使用 (3)循环嵌套:算法框架等问题 (4)循环语句包括:while语句.do-while语句.for语句.break语句 continue语句 2.实验过称中遇到的问题及解决方法 (1)有时无法区分三种循环语句的使用区别 (2)具体办法是看书和与同学讨论 3.实验心得体会及本章心得总结 了解了三种循环语句 4.预习循环结构程序设计 if(循环次数已知) 使用for语句 els

Storm系统架构以及代码结构学习

转自:http://blog.csdn.net/androidlushangderen/article/details/45955833 storm学习系列:http://blog.csdn.net/Androidlushangderen/article/category/2647213 前言 什么是storm,storm是做什么的,一个简单的描述,你可以理解为是一个“准实时”的Hadoop,Hadoop是专门做的是离线数据处理,而storm则弥补了Hadoop在这方面的不足,他是一个实时数据处

PE结构学习02-导出表

导出表: 上篇文章,我们学习了各种头,Dos,NT,节表头,我们知道,OptionalHeader指向的DataDirectory[]数组一共有16个: 我们接下来要学习的有: IMAGE_DIRECTORY_ENTRY_IMPORT 导入表 IMAGE_DIRECTORY_ENTRY_BASERELOC 基址重定位表 IMAGE_DIRECTORY_ENTRY_EXPORT 导出表 IMAGE_DIRECTORY_ENTRY_RESOURCE 资源表 今天我们学习导出表: 我们知道dll文件,

Hadoop Common 结构学习

从今天开始,开始研究学习Hadoop Common相关的源码结构.Hadoop Common在Hadoop1.0中是在core包下面的.此包下面的内容供HDFS和MapReduce公用,所以作用还是非常大的.Hadoop Common模块下的内容是比较多的.本人打算在后面的学习中挑选部分模块进行分析学习,比如他的序列化框架的实现,RPC的实现等等.我对此模块截出了一些图: 程序包下的主要模块关系图: 下面分模块,做一下简短的概述 1.org.apache.hadoop.conf,配置相关类,配置

HTML5的结构学习(2) --- 新增的非主体结构元素

除了上一篇学习到的主体结构元素之外,html5还增加了一些表示逻辑结构和附加信息的非主体结构元素: 1.header 解释:一种具有引导和导航作用的结构元素. 用途:通常用来放置整个页面或者页面内某一内容区块的标题部分.如标题名称.logo图片等. <header><h1>大标题</h1></header> <article> <header><h1>文章内容标题</h1></header> <

cocos2d&amp;amp;cocos2dx学习资源

汇总一下自己学习Cocos2d和cocos2dx认为比較好的一些资源: 书籍: <iPhone&iPad cocos2d游戏开发实战> Steffen Itterheim <IOS游戏编程从零開始> 李华明 <Cocos2dx游戏开发之旅> 笨木头 站点: 子龙山人 泰然网 笨木头 黑米 9TECH raywenderlich cocoaChina code4app supersuraccoon

HTML5的结构学习(3) --- 综合运用

前面学习了HTML5新增的主体结构元素和新增的非主体结构元素, 而这里我们来学习如何去综合的运用这些新增元素. 1.大纲 HMTL5元素的关键就是将显示内容和便签类型紧密相关,提高了代码的语义化和可读性. 我们这里的大纲就是指整个网站内容的大体排版.具体可以分为显示排版和隐式排版两种. 1)排版内容区块 是指明确使用section等元素创建文档结构,并且每个section都有自己的标题(h1~h6,hgroup) 2)隐式排版内容区块 是指不明确使用section等元素,而是直接在每个标题下创建