0

我无法弄清楚它是如何工作的。但据我了解 Texturepacker 中的修剪模式:“裁剪保持位置”应该以这种方式工作:“所有透明背景都被删除,原始精灵中有关彩色区域位置的信息保存在 plist 文件中”我在 COCOS2d 中加载 plist 文件,会记住彩色区域的位置,如果我在 cocos2d 中这样做:

sprite.setPosition(new cc.p(0,0));

精灵位置将相对于原始透明区域而不是彩色区域?这是正确的吗。因此,如果我将在左侧 20px 的透明区域加载一个精灵,setPosition 到 X = 0 将使精灵远离左边框 20px,那么?好吧,它对我不起作用,并且在 cocos2d 中不考虑透明区域。

我正在以这种方式加载精灵表:

var cache = cc.SpriteFrameCache.getInstance();
cache.addSpriteFrames("spritesheet.plist", "srcSprites/spritesheet.png");

this.sprite = cc.Sprite.createWithSpriteFrameName("00.png");

我做错了什么?

4

2 回答 2

0

默认情况下,精灵的纹理以该位置为中心。因此,与修剪后的精灵相比,裁剪位置不会有任何可见的效果,除非您更改锚点。

trim 和 crop (keep pos) 的唯一区别是纹理的 contentSize 发生了变化,但纹理相对于 sprite 位置的位置保持不变。

裁剪(flush pos)应该做你正在经历的事情,即修剪后的大小不再被视为纹理 contentSize 的一部分。

另请注意,TP 提到并非所有框架都支持裁剪功能。我不知道 cocos2d 是否支持该功能,实际上可能不支持。cocos2d 通常不需要它,因为修剪就足够了。

于 2013-11-13T02:09:35.573 回答
0

不完全相同的情况,但我有类似的情况,并发现了 TexturePacker 选项的组合。

http://www.cocos2d-x.org/forums/6/topics/42351?r=42435

于 2014-01-09T05:14:30.040 回答