最近在研究cocos,互联网行业中,手游业最近的表现是非常的火,加上本身对游戏有浓厚兴趣,所以便染指了游戏引擎~

这次的废话就这么简短吧,因为这次记录的东西本身就很少。

在cocos中,为精灵帧添加缓存可以通过下面的方法

cc.spriteFrameCache.addSpriteFrames(url, texture)

其中,第一个参数是一个 plist 或者 json 文件的路径,第二个参数是一个纹理图片对象,一般不传就可以了

添加了精灵帧缓存后,我们就可以通过下面的方法来创建精灵

new cc.Sprite("#帧名")

当中的帧名就配置在 plist 或者 json 文件中,当然,plist 或者 json 文件描述的不单单是帧名,还有每一个帧对应的是图片中的哪一部分

下面是一个最简单的 plist 文件实例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>frames</key>
  <dict>
    <key>icon001</key>
    <dict>
      <key>frame</key>
      <string>{{0,0},{240,240}}</string>
      <key>offset</key>
      <string>{0,0}</string>
      <key>rotated</key>
      <false/>
      <key>sourceColorRect</key>
      <string>{{0,0},{240,240}}</string>
      <key>sourceSize</key>
      <string>{240,240}</string>
    </dict>
  </dict>
  <key>metadata</key>
  <dict>
    <key>format</key>
    <integer>2</integer>
    <key>realTextureFileName</key>
    <string>b01.png</string>
    <key>size</key>
    <string>{240,240}</string>
    <key>textureFileName</key>
    <string>b01.png</string>
  </dict>
</dict>
</plist>

再来一个 json 的实例

{
"frames" : {
"icon001" : {
"frame" : "{{2,0},{640,305}}",
"offset" : "{0,0}",
"rotated" : false,
"sourceColorRect" : "{{0,0},{640,305}}",
"sourceSize" : "{640,305}"
},
"icon002" : {
"frame" : "{{2,625},{320,182}}",
"offset" : "{0,0}",
"rotated" : false,
"sourceColorRect" : "{{0,0},{320,182}}",
"sourceSize" : "{320,182}"
}
},
"metadata" : {
"format" : 2,
"realTextureFileName" : "ui_new_icon_png.png",
"size" : "{1024, 1024}",
"textureFileName" : "ui_new_icon_png.png"
}
}

frames 中的各个 key 代表帧名,指向该帧对应的截图信息对象,下面这个截图信息对象中的各个 key 代表的含义

frame:表示这一帧的截图,在大图中的位置和尺寸(也就是起始坐标以及需要截取的宽高)。

offset:表示这个截图的中心点,和整个动画的中心点。

rotated:如果值为true,图片顺时针旋转90度。

sourceColorRect:这个截图在sourceSize这个方形的位置和尺寸。

sourceSize:动画的尺寸,如果一个动画有很多帧的话,所有帧的sourceSize是不变的,基本上可以理解为这么多帧中最大显示范围的那个尺寸。

metadata 中的各个 key 代表的含义

textureFileNamerealTextureFileName:都是图片名(这个图片必须和 plist 或 json 文件在同一目录下)

size:图片的尺寸

format:这个比较复杂,放在最后特别说明一下

cocos2d-x 中的纹理定义格式,是以 Zwoptex 生成的格式为标准的。

Zwoptex 生成的格式,有4种主要不同的版本:

· format 值为0,代表 Flash 版本;

· format 值为1,Zwoptex 0.4b 以前支持;

· format 值为2,Zwoptex 1.0 以后支持,与 format1 的区别在于支持旋转;

· format 值为3,属性名称进行了大幅修改,Zwoptes1.0.2 之后支持。

生成plist文件的工具

对于纹理定义文件来说,它的作用是如何在大图中找到碎图的坐标。因此很多拼合碎图的软件可以在拼合碎图的同时生成plist文件。

TexturePacker 是所有平台上最好用的工具了。

Zwoptex 是 MAC Only 的软件,我不太喜欢用。

SpritePacker 是 Windows Only 的软件,功能尚可。

cocos2d-x中描述精灵帧图片的plist和json文件各个key的含义的更多相关文章

  1. vue+webpack项目中使用dev-server搭建虚拟服务器,请求json文件数据,实现前后台分离开发

    在项目开发中,前后台分离,做了假数据,项目使用vue2.0重构,后台也推到重来了,为了不耽误开发进程,我做了虚拟的数据请求,使用vue-cli脚手架搭建的项目文件中dev-server搭建虚拟api请 ...

  2. python爬虫简单实现,并在java中调用python脚本,将数据保存在json文件中

    # coding:utf-8 import urllib2 from bs4 import BeautifulSoup import json import sys reload(sys) sys.s ...

  3. cocos2d心得关于精灵帧缓存

    在cocos2d中,精灵帧缓存CCSpriteFrameCache是用来存储精灵帧的.它没有特别的属性,只存储了一些用来管理CCSpriteFrame的方法. 以一个例子来说明,一般在又纹理图集的程序 ...

  4. SpriteFrameCache 精灵帧缓存

    //获取精灵帧缓存的单例对象 auto  spriteFrameCache = SpriteFrameCache::getInstance(); //从plist文件添加多个精灵帧 spriteFra ...

  5. [转]nodejs中package.json和package-lock.json文件的功能分析

    本文转自:https://blog.csdn.net/u013992330/article/details/81110018 最新版nodejs中,多了一个package-lock.json文件,刚开 ...

  6. Scrapy基础(十一)————导出数据到json文件中

    之前介绍过将数据写入mysql数据库中,但是对于那些没有数据库的,可以通过写入json文件中或者是写入到csv或者xls:这里只介绍写入json文件中,也为再练习一下自定义的pipeline 思路: ...

  7. SpriteBuilder中如何平均拉伸精灵帧动画的距离

    首先要在Timeline中选中所有的精灵帧,可以通过如下2种的任意一种办法达成: 1按下Shift键的同时鼠标单击它们 2鼠标在Timeline空白区拖拽直到拉出的矩形包围住所有精灵帧方块后放开鼠标. ...

  8. php如何截取出视频中的指定帧作为图片

    php如何截取出视频中的指定帧作为图片 一.总结 一句话总结:截取视频指定帧为图片,php ffmpeg扩展已经完美实现,并且php ffmpeg是开源的 二.php如何截取出视频中的指定帧作为图片 ...

  9. 【Cocos2d-x 3.x】 精灵帧缓存和纹理缓存

    转自泰然网(Cocos2d-x 3.x官方文档):精灵帧缓存:http://www.tairan.com/archives/6378/   纹理缓存: http://www.tairan.com/ar ...

随机推荐

  1. CodeForces 572D Minimization(DP)

    题意翻译 给定数组AAA 和值kkk ,你可以重排AAA 中的元素,使得∑i=1n−k∣Ai−Ai+k∣\displaystyle\sum_{i=1}^{n-k} |A_i-A_{i+k}|i=1∑n ...

  2. 深水划水队项目---七天冲刺之day5

    站立式会议: 因为今天有成员回家,不能进行线下站立式会议,只能线上进行语音聊天 工作进度:  昨天完成的任务: 游戏功能的基本实现 商讨出如何实现游戏中的难度选择功能与道具功能 商讨出站立式会议能线下 ...

  3. Postgres 主从配置(五)

    PostgreSQL 9.4 新增的一个特性, replication slot,  1. 可以被流复制的sender节点用于自动识别它xlog中的数据在下面的standby中是否还需要(例如, st ...

  4. 清除浏览器缓存meta标签

    <meta http-equiv="Cache-Control" content="no-cache" /> <meta http-equiv ...

  5. C# 使用ProcessStartInfo调用exe获取不到重定向数据的解决方案

    emmmmm,最近在研究WFDB工具箱,C语言写的,无奈本人C语言功底不够,只想直接拿来用,于是打算通过ProcessStartInfo来调取编译出来的exe程序获取输出. 一开始就打算偷懒,从园子里 ...

  6. Caffe任务池GPU模型图像识别

    一开始我在网上找demo没有找到,在群里寻求帮助也没有得到结果,索性将网上的易语言模块反编译之后,提取出对应的dll以及代码,然后对照官方的c++代码,写出了下面的c#版本 /*** * @pName ...

  7. 关于StreamReader.ReadToEnd方法

    以前写抓取网页的代码喜欢用ReadToEnd,因为简单省事,后来发现,在爬取网页的时候,如果网速很慢,ReadToEnd超时的几率很大.使用Read改写后,超时几率大大减小,完整代码如下: /// & ...

  8. C#基础笔记(第十八天)

    1.HTMLHyper Text Markup Language 超文本标记语言在HTML当中存在着大量的标签,我们用HTML提供的标签,将要显示在网页中的内容包含起来.就构成了我们的网页. CSS: ...

  9. iOS Apple Watch 开发

    1. Watch OS 1 与 Watch OS 2 的区别 : OS 1 中界面运行在手表上,而代码(Extension)运行在手机端:OS 2 是纯正的手表原生(Native)应用 由于架构的改变 ...

  10. WPF Adorner 在TabControl切换TabItem时消失

    错误的截图: 一开始以为是MVVM绑定的代码中出现了问题,但是通过断点追踪并没有发现问题. 通过通过VS的实时可视化树发现问题:切换Item时Adorner会在AdornerLayer直接消失.届时怀 ...