cocos2d-x动画制作(cocos2d-x2.1)

news/2024/7/5 6:51:06

本博客参考资料:http://www.raywenderlich.com/1271/how-to-use-animations-and-sprite-sheets-in-cocos2d


预备

用到的图片下载

TexturePacker是资源打包器,将资源打包,一起载入到游戏既方便又可以提升性能。

将下载好的图片解压缩,然后拖入到TexturePackerGUI的右边Sprites窗口中:

可以看到已经被载入了,点击工具栏Publish输出到指定目录,可以看到生成了一个.plist文件和一个png大图。


下面开始创建工程:

首先创建新工程,命名:Bears,下一步去除Box2D选项,点击完成。

将之前的两个生成文件放入到工程resource目录中。


打开HelloWorldScene.h文件,添加成员:

	cocos2d::CCSpriteBatchNode *_actors;
	cocos2d::CCSprite *_bear;

打开HelloWorldScene.cpp文件,删除掉init()中的无关代码,并且添加下列代码:

		
		// add bear animate
		
		CCSpriteFrameCache *cache = CCSpriteFrameCache::sharedSpriteFrameCache();
		cache->addSpriteFramesWithFile("Bears.plist");
		_actors = CCSpriteBatchNode::create("Bears.png");
		this->addChild(_actors);

		_bear = CCSprite::createWithSpriteFrameName("bear1.png");
		CCSize winSize = CCDirector::sharedDirector()->getWinSize();
		_bear->setPosition(ccp(winSize.width / 2, winSize.height / 2 ));
		_actors->addChild(_bear);
		// 为每帧创建图片
		CCArray *walkFrames = CCArray::createWithCapacity(8);
		for (int i = 1; i <= 8; i++)
		{
			CCSpriteFrame *frame = cache->spriteFrameByName(CCString::createWithFormat("bear%1d.png", i)->getCString());
			walkFrames->addObject(frame);
		}
		
		// 创建动画
		CCAnimation *walkAnimation = CCAnimation::createWithSpriteFrames(walkFrames, 1.0f / 12.0f);
		CC_BREAK_IF(!walkAnimation);
		CCAnimate* walkAnimate = CCAnimate::create(walkAnimation);
		CC_BREAK_IF(!walkAnimate);

		// 运行动画动作
		_bear->runAction(CCRepeatForever::create(walkAnimate));

制作动画的思路就是用数组CCArray保存所有帧的图片,将这个数组用来创建CCAnimation对象,进而通过CCAnimation对象来创建CCAnimate,创建了CCAnimate对象后,使用精灵来播放执行动作runAction。使用打包和批处理可以使加载动作更方便并且获得更高的性能。


运行程序可以看到屏幕上出现一个正在行走的熊,这说明动画正常执行了。




http://www.niftyadmin.cn/n/4364466.html

相关文章

用户控件使用一例

用户控件使用一例 用户控件的简单使用例子&#xff0c;做一个用户登陆的用户控件。用户登陆某个系统是个非常常见的问题&#xff0c;这里笔者想把这样的问题作为一个用户控件来使用&#xff0c;方便各个用户。 1、在工程中新建立一个Web用户控件&#xff0c;此时加入的名称为F…

cocos2d-x按钮菜单(cocos2d-x2.1)

首先看看程序运行时&#xff1a; 程序中有四种菜单项按钮&#xff1a;文本菜单项&#xff08;stop walk&#xff09;&#xff0c;图字菜单项&#xff08;Hide Bear&#xff09;&#xff0c;Toggle菜单项&#xff08;Go Right&#xff09;以及图片菜单&#xff08;程序开关&…

用下拉列表控制gridview的分页

用下拉列表控制gridview的分页 protected void GridView1_DataBound(object sender, EventArgs e) { if (!IsPostBack) {//判断页是否第一次载入&#xff0c;如果你想知道为什么&#xff0c;恰恰我又不想解释&#xff0c;那你去掉这个试下即可 …

cocos2d-x GUI控件的使用(cocos2d-x2.1)

在使用extensions时都需要额外指定include、lib&#xff0c;例如笔者的VS11环境&#xff0c;右键项目 属性-->配置属性-->VC目录在包含目录中添加F:\cocos2d-2.1beta3-x-2.1.1\extensions;以及在链接器-->命令行添加libextensions.lib或者使用代码添加 #pragma comme…

用正则表达式突出显示字符串中查询到的单词的函数

用正则表达式突出显示字符串中查询到的单词的函数 Function BoldWord(strContent,word)dim objRegExpSet objRegExpnew RegExpobjRegExp.IgnoreCase trueobjRegExp.GlobalTrue objRegExp.Pattern"(" & word & ")"strContentobjRegExp.Replace(st…

box2d弹球 cocos2d-x重力感应(cocos2d-x2.1)

本博客例子参考&#xff1a;raywenderlich 我将上面obj-c的翻译成了C&#xff0c;改动很少。首先在win32下新建新工程 修改HelloWorldScene.h #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__#include "cocos2d.h"#include "Box2D/Box2D.h&qu…

自定义控件的拖动

自定义控件的拖动 //添加事件 this.MouseUp new System.Windows.Forms.MouseEventHandler(this.DragEnd); this.MouseMove new System.Windows.Forms.MouseEventHandler(this.DragMove); this.MouseDown new System.Windows.Forms.MouseEventHandler(this.DragBegin);  …

做ASP小偷时.经常需要用到的函数.

做ASP小偷时.经常需要用到的函数. 采集页面:Function GetPage(url) dim SendData,Retrieval Set Retrieval CreateObject("Microsoft.XMLHTTP") With Retrieval .Open "post", url, False .setRequestHeader "Conten…