精灵
精灵(Sprite
)实际上又是一个特殊的纹理域对象,除此之外,它内部还封装了大量设置属性和切换状态的方法,利用这些方法我们可以将指定的纹理域对象以期望的方式渲染到屏幕上。下面列举了几种创建Sprite
对象的方法,以及Sprite
类提供的几个重要方法。
创建精灵对象的方法:
public Sprite (Texture texture); public Sprite (TextureRegion region); public Sprite (Texture texture, int srcX, int srcY, int srcWidth, int srcHeight); public Sprite (TextureRegion region, int srcX, int srcY, int srcWidth, int srcHeight);
通过前面对纹理和纹理域的学习,理解上述方法非常容易,这里不再赘述。
属性设置、状态变换、尺寸控制的方法:
public void setSize (float width, float height)
:设置精灵对象的尺寸,但是此处的单位并不是像素,而是一种逻辑单位,有关逻辑单位的内容我们将在本章后面讲解。如果不显示设置对象的尺寸,则默认等于纹理域的像素尺寸。创建精灵对象之后,我们可以通过getWidth()
和getHeight()
方法获得对象尺寸。public void setPosition (float x, float y)
:设置精灵对象的位置,此时x
和y
是以世界坐标系为基准的,世界坐标系的x轴水平向右,y轴竖直向上,坐标刻度的单位同样是逻辑单位,x
和y
表示精灵对象的左下角在世界坐标系的位置。public void setBounds (float x, float y, float width, float height)
:同时设置精灵对象的尺寸和位置。public void setOrigin (float originX, float originY)
:设置本地坐标系的原点位置,本地坐标系只用于对象的旋转和缩放操作。Sprite
类还提供一个便捷方法setOriginCenter()
直接将原点设置为对象的中心位置。public void setScale (float scaleX, float scaleY)
:设置精灵对象在x方向和y方向的绝对缩放值,任何缩放操作都不会影响对象的真实尺寸,即:该方法不会影响getWidth()
和getHeight()
的返回值。还有,缩放操作和下面讲解的旋转操作都是以本地坐标系的原点为中心进行变换的。public void setScale (float scaleXY)
:将x方向和y方向的绝对缩放值设置成一致的。public void scale (float amount)
:相对缩放,即在当前的绝对放值上增加amount
。setRotation (float degrees)
和rotate (float degrees)
:分别用于设置绝对旋转角度和相对旋转角度。取值大于零表示逆时针旋转,小于零表示顺时针旋转。单位为角度而不是弧度。public void draw (Batch batch)
:渲染精灵对象,参数batch
表示精灵批对象,下一节将会有讲解。
上面提到了几个重要的概念,分别是世界坐标系、本地坐标系和逻辑单位,逻辑单位将在 相机 一节讲解。关于世界坐标系和本地坐标系的关系,可以通过下面截图加以理解:
