天天看點

執行個體:使用紋理對象建立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

繼續閱讀