精靈類是Sprite,它的類圖以下圖所示。
html
Sprite類圖緩存
Sprite類直接繼承了Node類,具備Node基本特徵。此外,咱們還能夠看到Sprite類的子類有:PhysicsSprite和Skin。PhysicsSprite是物理引擎精靈類,Skin是皮膚精靈類用於骨骼動畫。
建立Sprite精靈對象
建立精靈對象有多種方式,其中經常使用的函數以下:
cc.Sprite:create ()。建立一個精靈對象,紋理[ 紋理(texture),表示物體表面細節的一幅或幾幅二維圖形,也稱紋理貼圖,當把紋理按照特定的方式映射到物體表面上的時候能使精靈看上去更加真實。 ]等屬性須要在建立後設置。
cc.Sprite:create (filename)。指定圖片建立精靈。
cc.Sprite:create (filename, rect)。指定圖片和裁剪的矩形區域來建立精靈。
cc.Sprite:createWithTexture (texture)。指定紋理建立精靈。
cc.Sprite:createWithTexture(texture, rect, rotated=false)。指定紋理和裁剪的矩形區域來建立精靈,第三個參數是否旋轉紋理,默認不旋轉。
cc.Sprite:createWithSpriteFrame(pSpriteFrame)。經過一個精靈幀對象建立另外一個精靈對象。
cc.Sprite:createWithSpriteFrameName (spriteFrameName)。經過指定幀緩存中精靈幀名建立精靈對象。
上述create函數咱們在前面章節中介紹過,並且create函數比較簡單,咱們就再也不介紹了。
實例:使用紋理對象建立Sprite對象
使用紋理Texture2D對象建立Sprite對象是使用createWithTexture函數實現的。本節咱們會經過一個實例介紹紋理對象建立Sprite對象使用,這個實例以下圖所示,其中地面上的草是放在背景(如圖所示)中的,場景中的兩棵樹是從圖所示的「樹」紋理圖片中截取出來的,如圖所示是樹的紋理座標,注意它的座標原點在左上角。
微信
建立Sprite對象實例函數
場景背景圖片動畫
「樹」紋理圖片網站
「樹」紋理座標lua
HelloWorldScene.cpp實現的createLayer函數代碼以下:
spa
[html] view plaincopy.net
function GameScene:createLayer() code
local layer = cc.Layer:create()
local bg = cc.Sprite:create("background.png") ①
bg:setPosition(cc.p(size.width/2, size.height/2)) ②
layer:addChild(bg)
local tree1 = cc.Sprite:create("tree1.png",cc.rect(604, 38, 302, 295)) ③
tree1:setPosition(cc.p(200,230))
layer:addChild(tree1,0)
local cache = cc.Director:getInstance():getTextureCache():addImage("tree1.png") ④
local tree2 = cc.Sprite:create() ⑤
tree2:setTexture(cache) ⑥
tree2:setTextureRect(cc.rect(73, 72,182,270)) ⑦
tree2:setPosition(cc.p(500,200))
layer:addChild(tree2,0)
return layer
end
在上面代碼第①行cc.Sprite:create("background.png")經過background.png圖片建立精靈,background.png圖片如前圖所示,第②行代碼是設置背景的位置。
第③行代碼cc.Sprite:create("tree1.png",cc.rect(604, 38, 302, 295))經過tree1.png圖片和矩形裁剪區域建立精靈,矩形裁剪區域爲(604, 38, 302, 295),如圖所示。
rect類能夠建立矩形裁剪區,rect構造函數以下:
cc.rect(x, y, width, height)
其中x,y是UI座標,座標原點在左上角,width是裁剪矩形的寬度,height是裁剪矩形的高度。
第④行代碼經過紋理緩存TextureCache建立紋理Texture2D對象,經過Director的getTextureCache()函數能夠得到TextureCache實例,TextureCache 的addImage("tree1.png")函數能夠建立紋理Texture2D對象,其中的tree1.png是紋理圖片名。
第⑤行代碼建立一個空的Sprite對象,因此還要經過的後面的不少函數設置它的屬性,其中第⑥行代碼tree2:setTexture(cache)是設置紋理。第⑦行代碼tree2:setTextureRect(cc.rect(73, 72,182,270))是設置紋理的裁剪區域。
更多內容請關注最新Cocos圖書《Cocos2d-x實戰:Lua卷——Cocos2d-lua開發》
本書交流討論網站:http://www.cocoagame.net
歡迎加入Cocos2d-x技術討論羣:257760386
更多精彩視頻課程請關注智捷課堂Cocos課程:http://v.51work6.com
智捷課堂現推出Cocos會員,敬請關注:http://v.51work6.com/courseInfoRedirect.do?action=netDetialInfo&courseId=844465&categoryId=0
《Cocos2d-x實戰 Lua卷》現已上線,各大商店均已開售:
京東:http://item.jd.com/11659697.html
歡迎關注智捷iOS課堂微信公共平臺,瞭解最新技術文章、圖書、教程信息