這個(gè)函數(shù) 我在看3.10的display框架的時(shí)候發(fā)現(xiàn)的
一直不知道有什么作用,本著曾國藩上頁不讀完不讀下頁,一本書不讀完不讀下本的精神
決定追本溯源
以下就是我發(fā)現(xiàn)的代碼
local fileUtils = cc.FileUtils:getInstance()
function display.getImage(imageFilename)
local fullpath = fileUtils:fullPathForFilename(imageFilename)
return textureCache:getTextureForKey(fullpath)
end
前面的都很好理解 什么fileUtils 文件類 textureCache其實(shí)是個(gè)
cc.Director:getInstance():getTextureCache()
getTextureForKey是什么呢
起先我以為是獲得一張圖片紋理 然后設(shè)置到精靈里面去
后來發(fā)現(xiàn)并不是我想的那樣
目前我發(fā)現(xiàn)了這個(gè)函數(shù)有3個(gè)作用
判斷你的plist png 紋理是否加載到內(nèi)存里面了
cc.SpriteFrameCache:getInstance():addSpriteFrames("filpCardAllSpr.plist", "filpCardAllSpr.png")
local fileUtils = cc.FileUtils:getInstance()
local fullpath = fileUtils:fullPathForFilename("filpCardAllSpr.png")
local texture = cc.Director:getInstance():getTextureCache():getTextureForKey(fullpath)
dump(texture, "tex = ")
輸出
"tex = " = userdata: 0x0a78e858
如果沒有addSpriteFrames
"tex = " = nil
之后在C++源碼里面搜getTextureForKey
發(fā)現(xiàn)還有另外2個(gè)用法
dump(texture:getPixelFormat(), "pixel format: ")
dump(texture:hasPremultipliedAlpha(), "premultiplied alpha: ")
輸出
"pixel format: " = 2
"premultiplied alpha: " = true
那么 這2個(gè)函數(shù)又是干什么的呢
texture:getPixelFormat 給出的翻譯是
取得當(dāng)前紋理的貼圖像素格式徙歼。
參考網(wǎng)頁:http://www.cnblogs.com/sevenyuan/archive/2013/07/17/3195798.html
texture:hasPremultipliedAlpha()給出的翻譯是
是否有ALPHA漸變值
參考網(wǎng)頁:同上
參考網(wǎng)頁AE中的通道預(yù)乘:http://www.cgspread.com/7677.html
"pixel format: " = 2
那這個(gè)2又對應(yīng)的是什么呢
發(fā)現(xiàn)是對應(yīng)RGBA8888的
這樣就可以判斷紋理的格式了
cc.TEXTURE2_D_PIXEL_FORMAT_AUTO = 0x0
cc.TEXTURE2_D_PIXEL_FORMAT_BGR_A8888 = 0x1
cc.TEXTURE2_D_PIXEL_FORMAT_RGB_A8888 = 0x2
cc.TEXTURE2_D_PIXEL_FORMAT_RG_B888 = 0x3
cc.TEXTURE2_D_PIXEL_FORMAT_RG_B565 = 0x4
cc.TEXTURE2_D_PIXEL_FORMAT_A8 = 0x5
cc.TEXTURE2_D_PIXEL_FORMAT_I8 = 0x6
cc.TEXTURE2_D_PIXEL_FORMAT_A_I88 = 0x7
cc.TEXTURE2_D_PIXEL_FORMAT_RGB_A4444 = 0x8
cc.TEXTURE2_D_PIXEL_FORMAT_RGB5_A1 = 0x9
cc.TEXTURE2_D_PIXEL_FORMAT_PVRTC4 = 0xa
cc.TEXTURE2_D_PIXEL_FORMAT_PVRTC4A = 0xb
cc.TEXTURE2_D_PIXEL_FORMAT_PVRTC2 = 0xc
cc.TEXTURE2_D_PIXEL_FORMAT_PVRTC2A = 0xd
cc.TEXTURE2_D_PIXEL_FORMAT_ETC = 0xe
cc.TEXTURE2_D_PIXEL_FORMAT_S3TC_DXT1 = 0xf
cc.TEXTURE2_D_PIXEL_FORMAT_S3TC_DXT3 = 0x10
cc.TEXTURE2_D_PIXEL_FORMAT_S3TC_DXT5 = 0x11
cc.TEXTURE2_D_PIXEL_FORMAT_DEFAULT = 0x0
2017年7月10日21:46:50
新發(fā)現(xiàn)一個(gè)用法 那就是 不用plist 創(chuàng)建一張大圖中的一部分作為紋理
local BugSprite = class("BugSprite", function(imageFilename)
local texture = display.getImage(imageFilename)
local frameWidth = texture:getPixelsWide() / 3
local frameHeight = texture:getPixelsHigh()
local spriteFrame = display.newSpriteFrame(texture, cc.rect(0, 0, frameWidth, frameHeight))
local sprite = display.newSprite(spriteFrame)
sprite.animationName_ = imageFilename
sprite.frameWidth_ = frameWidth
sprite.frameHeight_ = frameHeight
return sprite
end)