問(wèn)題描述:
公司有部分產(chǎn)品里面有使用filter濾鏡(比如將一個(gè)精靈置灰),導(dǎo)致場(chǎng)景內(nèi)的布局混亂,臨床表現(xiàn)為:精靈位置發(fā)生大幅度偏移,或放大,或變小等。這是一個(gè)非必現(xiàn)的問(wèn)題,有時(shí)正常,有時(shí)不正常。這種問(wèn)題是使用濾鏡效果引起的,具體原因不明。所以只能走曲線(xiàn)救國(guó)的辦法解決問(wèn)題。
首先找到問(wèn)題代碼:
添加效果代碼大概長(zhǎng)這樣:
local spr= D.img("xxx/xxx.png",{ class = CCFilteredSpriteWithOne }):to(parent):p(x, y)
-- 濾鏡
local filters = filter.newFilter("GRAY", {})
spr:setFilter(filters)
或
local spr= U.loadSpriteFilter({
imgName = xxx/xxx.png,
filters = "GRAY",
}):to(parent):p(x, y)
恢復(fù)正常顯示的代碼:
local filters = filter.newFilter("BRIGHTNESS", {})
spr:setFilter(filters)
目前使用的解決方法是用 CCGraySprite 來(lái)代替用filter實(shí)現(xiàn)的精靈置灰效果(目前只發(fā)現(xiàn)使用灰色效果),原理是獲取精靈的紋理然后創(chuàng)建一個(gè)和精靈一模一樣的灰色精靈覆蓋在上面,方法如下:
1.找到添加濾鏡處的代碼用下面的方法替換:
local spr= D.img("xxx/xxx.png"):to(parent):p(x, y)
-- 創(chuàng)建灰色精靈覆蓋在 spr 上面
local gray = CCGraySprite:createWithTexture(spr:getTexture(), spr:getTextureRect())
gray = CCNodeExtend.extend(gray)
--添加到精靈spr同一位置就行了
gray:to(parent):p(x, y)
-- 可以把灰色精靈綁定為spr的一個(gè)屬性方便移除對(duì)應(yīng)精靈的灰色效果
spr.gray = gray
2.恢復(fù)顯示的代碼替換為以下方法即可:
spr.gray:remove()
author :lan
date :2016-06-14
更多