天天看点

实例:使用纹理对象创建Sprite对象

精灵类是sprite,它的类图如下图所示:

实例:使用纹理对象创建Sprite对象

sprite类直接继承了node类,具有node基本特征。此外,我们还可以看到sprite类的派生类有:physicssprite和skin。physicssprite是物理引擎精灵类,skin是皮肤精灵类用于骨骼动画。

使用纹理texture2d对象创建sprite对象是使用createwithtexture函数实现的。我们会通过一个实例介绍纹理对象创建sprite对象使用,这个实例如下面第一张图所示,其中地面上的草是放在背景中的,场景中的两棵树是从“树”纹理图片中截取出来的,最后一张图所示的是树的纹理坐标,注意它的坐标原点在左上角。

                                                  创建sprite对象实例

实例:使用纹理对象创建Sprite对象

场景背景图片

实例:使用纹理对象创建Sprite对象

 “树”纹理图片

实例:使用纹理对象创建Sprite对象

树”纹理图片

实例:使用纹理对象创建Sprite对象

helloworldscene.cpp实现的init函数代码如下:

在上面代码第①行sprite::create("background.png")通过background.png图片创建精灵,第②行代码是设置背景的锚点。

第③行代码sprite::create("tree1.png",rect(604, 38, 302, 295))通过tree1.png图片和矩形裁剪区域创建精灵,矩形裁剪区域为(604, 38, 302,295)。

rect类可以创建矩形裁剪区,rect构造函数如下:

rect (float x, float y, float width,float height)

其中x,y是ui坐标,坐标原点在左上角,width是裁剪矩形的宽度,height是裁剪矩形的高度。

第④行代码通过纹理缓存texturecache创建纹理texture2d对象,texturecache::getinstance()是采用单例设计模式,通过getinstance()函数可以获得texturecache实例,texturecache 的addimage("tree1.png")函数可以创建纹理texture2d对象,其中的tree1.png是纹理图片名。

第⑤行代码创建一个空的sprite对象,所以还要通过的后面的很多函数设置它的属性,其中第⑥行代码tree2->settexture(cache)是设置纹理。第⑦行代码tree2->settexturerect(rect(73, 72,182,270))是设置纹理的裁剪区域。

欢迎加入cocos2d-x技术讨论群:257760386、327403678

继续阅读