精靈類是Sprite,它的類圖以下圖所示:html
Sprite類直接繼承了Node類,具備Node基本特徵。此外,咱們還能夠看到Sprite類的派生類有:PhysicsSprite和Skin。PhysicsSprite是物理引擎精靈類,Skin是皮膚精靈類用於骨骼動畫。web
使用紋理Texture2D對象建立Sprite對象是使用createWithTexture函數實現的。咱們會經過一個實例介紹紋理對象建立Sprite對象使用,這個實例以下面第一張圖所示,其中地面上的草是放在背景中的,場景中的兩棵樹是從「樹」紋理圖片中截取出來的,最後一張圖所示的是樹的紋理座標,注意它的座標原點在左上角。設計模式
建立Sprite對象實例緩存
場景背景圖片函數
「樹」紋理圖片
動畫
樹」紋理圖片
this
HelloWorldScene.cpp實現的init函數代碼以下:spa
[html] view plaincopy.net
bool HelloWorld::init() 設計
{
if ( !Layer::init() )
{
return false;
}
Size visibleSize = Director::getInstance()->getVisibleSize();
Point origin = Director::getInstance()->getVisibleOrigin();
autobackground = Sprite::create("background.png"); ①
background->setAnchorPoint(Point::ZERO); ②
this->addChild(background,0);
auto tree1 = Sprite::create("tree1.png",Rect(604, 38, 302,295)); ③
tree1->setPosition(Point(200,230));
this->addChild(tree1,0);
Texture2D* cache = TextureCache::getInstance()->addImage("tree1.png"); ④
auto tree2 = Sprite::create(); ⑤
tree2->setTexture(cache); ⑥
tree2->setTextureRect(Rect(73, 72,182,270)); ⑦
tree2->setPosition(Point(500,200));
this->addChild(tree2,0);
return true;
}
在上面代碼第①行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))是設置紋理的裁剪區域。