在官方的API中,一种Rect的构造函数共四个参数,即x,y,width,height。
按照官方解释,xy为左下角原点坐标。但是在截取图片素材的时候,例如SpriteFrame的create方法,需要传入一个Rect对象指定范围。
需要注意的是,此时的使用的是图片本身的坐标系,级x,y代表的是左上的原点。对于width和height,如果按照图片的实际像素尺寸去计算得到的结果是不正确的。根据源代码可以发现,传入的Rect对象会被一个宏处理:
这个宏的作用是将点矩阵转换为像素矩阵
那么一切明了,我们传入的Rect对象应该是一个点矩阵,但是一般我们都会以像素作为计算单位,所以需要这样处理,类似的:
SpriteFrame::createWithTexture(texture, CC_RECT_PIXELS_TO_POINTS(Rect( + i*texture->getPixelsWide() / , , texture->getPixelsWide() / , texture->getPixelsHigh() / )))
即通过像素计算width和height,然后将结果通过
CC_RECT_PIXELS_TO_POINTS
转换为点矩阵