之前了解了一种比较简单的图片的使用方式,

今次来了解稍微复杂一点的图片使用方式,plist+png。

这里要用到之前提到的Texture Packer。

Texture Packer是一款图片打包工具,Texture Packer可以将素材打包成我们项目需要的格式。

Cocos2dx支持很多种格式, 我们可以将某一种类的或者有共性的图片打包到一个png,然后用plist管理,以节约加载和内存,且显卡支持的纹理尺寸的长宽为2的n次幂,Texture Packer会把纹理整合到次尺寸。

今次我们利用plist和png来创建一个动画。

以下是我搜集到的一个系列素材:

在Texture Packer中点击add folder,定位到此文件夹;

在左边的output栏目:选择dataformat为cocos2d;

如下:

然后点击工具栏里面的publish级完成导出,导出的成功如下:

回到我们之前的代码中,加入以下代码:

//使用plist作为动画
CCTexture2D::PVRImagesHavePremultipliedAlpha(true);
CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("feiyunan.plist");
CCSprite * player = CCSprite::create("feiyunan.png");
this->addChild(player);

这样,我们就可以在程序中看到这个图片了。

但是,这个素材是一个系列的动画帧来的,我们看到的却只有一个不动所有帧都显示在上面的的图片。

用文本编辑器打开plist文件,可以看到里面保存了每帧动画的所有资料。

然后这里附带学习了一下动画的播放方式。

CCArray* animFrames = CCArray::createWithCapacity(15);//有多少帧
char str[100] = {0};
for(int i=0; i<24; i++)
{
sprintf(str,"feiyu%d.png",i);
CCSpriteFrame* frame = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName(str);
if( frame != NULL )
animFrames->addObject( frame );

CCAnimation *animation = CCAnimation::createWithSpriteFrames( animFrames,0.1f );
animation->setLoops(-1);
player->runAction(CCAnimate::create(animation));
player->setPosition(ccp(200,200));

  

以上内容皆可在api中查到,然后重新运行,可以看到角色在跑动了。

如下:

Cocos2dx 学习笔记整理----在项目中使用图片(二)的更多相关文章

  1. Cocos2dx 学习笔记整理----在项目中使用图片(一)

    cocos2dx有多种使用图片的方法,先来个最简单的:用CCSprite直接使用图片. 首先,进入到之前建立的项目,把你将要使用的图片放入到目录下的Resources文件夹里面.项目中以相对路径使用资 ...

  2. Cocos2dx 学习笔记整理----在项目中使用图片(三)

    这节练习下DragonBones. 手机由于性能所限,需要特注意资源的使用. 游戏项目的话由于资源比较多,一般都会用到DragonBones来做动作,这个又称为龙骨. DragonBones传送点:h ...

  3. Cocos2dx 学习笔记整理----第一个项目

    接上一节, 进入新建的项目下面的proj.win32下面,找到项目名.sln文件(我的是game001.sln),双击会通过VS2010打开.(当然,你装了VS什么版本就是什么版本) 将你的项目设为启 ...

  4. Cocos2dx 学习笔记整理----开发环境搭建

    最近在学习cocos2dx,预备将学习过程整理成笔记. 需要的工具和环境整理一下: 使用的版本 cocos2dx目前已经出到了v3.1.1,学习和项目的话还是用2.2.3为宜,毕竟不大想做小白鼠,并且 ...

  5. 五毛的cocos2d-x学习笔记01-创建项目

    终于准备开始学习cocos2d-x了.因为想和同学一起做游戏参加比赛,所以打算学习很热的Cocos2d-x.因为已经学习了C++,所以我想入门应该不是很困难.再加上官网有中文教程以及多不胜数的游戏开发 ...

  6. Cocos2dx 学习笔记整理----场景切换

    据说Cocos2dx场景切换的方法有32种:cocos2dx 常见的32种切换场景的动画 无需一一求证,只需要知道切换场景需要怎么做就行了. 作为导演CCDirector,切换场景的事情当然归它管了. ...

  7. Python学习笔记整理(三)Python中的动态类型简介

    Python中只有一个赋值模型 一.缺少类型声明语句的情况 在Python中,类型是在运行过程中自动决定的,而不是通过代码声明.这意味着没有必要事声明变量.只要记住,这个概念实质上对变量,对象和它们之 ...

  8. Python学习笔记整理(五)Python中的列表.

    列表和字段,这两种类型几乎是Python所有脚本的主要工作组件.他们都可以在原处进行修改,可以按需求增加或缩短,而且包含任何种类的对象或者被嵌套. 一.列表 列表的主要属性: *任意对象的有序集合 从 ...

  9. Python学习笔记整理(四)Python中的字符串..

    字符串是一个有序的字符集合,用于存储和表现基于文本的信息. 常见的字符串常量和表达式 T1=‘’ 空字符串 T2="diege's" 双引号 T3=""&quo ...

随机推荐

  1. grub修复

    sudo mount /dev/sda1 /boot/efi sudo modprobe efivarfs sudo grub-install /dev/sda sudo update-grub su ...

  2. 转 dos 下的 find 和 重定向

    1.find /i "ora-" *.* > check.log 附录: 我对findstr是如此的依赖,以至于当我向各位讲解find命令的时候,我还得老老实实地在cmd窗口 ...

  3. OpenGL中shader读取实现

    1.需要shader在OpenGL中工作,必须经过如下过程 2.代码实现 /********** * loadshader.h **********/ #pragma once #define _CR ...

  4. OpenGL与vs编程——error C2440: “glMaterialfv”: 无法从“GLfloat”转换为“const GLfloat *”

    void setMaterial(const GLfloat mat_diffuse[4],GLfloat mat_shininess){static const GLfloat mat_specul ...

  5. HDU5908 Abelian Period 暴力

    题目大意:将一个数组分成长度为k的几个连续区间,如果每个区间内各个元素出现的次数相同,则称k为一个阿贝尔周期,从小到大打印所有阿贝尔周期,数据间加空格. 题目思路:map+暴力 #include< ...

  6. 在DLL中导出另一静态库中的函数

    开发环境: win7_x64.VS2013 应用场景: 动态库A依赖动态库B,而动态库B又使用了静态库C:有些情况下,我们需要将C从B里面导出,然后提供给A使用. 正文: Step1: 1.新建测试静 ...

  7. NSAttributedString 的21种属性 详解

    原文链接:http://www.jianshu.com/p/09f54730feaa 先看看所有的Key NSFontAttributeName; //字体,value是UIFont对象 NSPara ...

  8. 运行第一个SparkKPI程序

    1.复制一个examples中SparkPi.scala到IntelliJ IDEA编辑器,运行,出现错误: “org.apache.spark.SparkException: A master UR ...

  9. html 7.28

    1.HTML标记在没有添加任何样式的时候,默认是有间距的,所以我们要先把把所有标记归置内(padding)外(margin)边距归置为0 2.HTML5 中不支持 <acronym> 标签 ...

  10. Basically Speaking

    Basically Speaking Time Limit: 2 Sec  Memory Limit: 200 MB Submit: 19  Solved: 11 [Submit][Status][W ...