– cclog
cclog = function(…)
print(string.format(…))
end
– for CCLuaEngine traceback
function G__TRACKBACK(msg)
cclog("----------------------------------------")
cclog(“LUA ERROR: " … tostring(msg) … “\n”)
cclog(debug.traceback())
cclog(”----------------------------------------")
end
function Glittering(mSprite)
local De_Stencil = CCSprite:create(“Image_EquipLight.png”)
local blendFunc = ccBlendFunc()
blendFunc.src = GL_ONE_MINUS_DST_COLOR
blendFunc.dst = GL_ONE
De_Stencil:setBlendFunc(blendFunc)
local mSpriteCopy = mSprite:clone()
local ms = tolua.cast(mSpriteCopy:getVirtualRenderer(),“CCSprite”)
local tbSize = mSprite:getContentSize()
local x,y = mSprite:getPosition()
local mx = x - tbSize.width/2
local my= y - tbSize.height/2
local clipe = CCClippingNode:create()
ms:setPosition(ccp(tbSize.width/2,tbSize.height/2))
De_Stencil:setPosition(ccp(- 50, -50))
clipe:setStencil(ms)
clipe:setAlphaThreshold(0)
clipe:setPosition(ccp(-tbSize.width/2,-tbSize.height/2 ))
clipe:setInverted(false)
clipe:addChild(De_Stencil)
mSprite:removeAllNodes()
mSprite:addNode(clipe,100)
function funcCallBack()
De_Stencil:setPosition(ccp(- 50, -50))
end
if not DelayTime then
DelayTime = 0.8
end
if not startTime then
startTime = 0
end
local mtime = 0.8
if not speed then
mtime = 0.8
else
local xy = mx*mx + my*my
mtime = math.sqrt (xy) / speed
end
function starAcition()
local action1 = CCMoveTo:create(mtime,CCPointMake(tbSize.width + 50 , tbSize.height + 50 ))
local actionEa2 = CCEaseIn:create(action1, mtime)
local arr1 = CCArray:create()
arr1:addObject(CCDelayTime:create(startTime))
arr1:addObject(actionEa2)
arr1:addObject(CCDelayTime:create(DelayTime))
arr1:addObject(CCCallFuncN:create(funcCallBack))
local actionse = CCSequence:create(arr1)
local actionRE = CCRepeatForever:create(actionse)
De_Stencil:runAction(actionRE)
end
starAcition()
end
local function main()
– avoid memory leak
collectgarbage(“setpause”, 100)
collectgarbage(“setstepmul”, 5000)
--------------
-- run
local sceneGame = CCScene:create()
local button = Button:create()
button:loadTextureNormal(“Panel_S9.png”)
local Icon = ImageView:create()
Icon:loadTexture(“Equip_Necklace2_Yellow.png”)
Icon:setScale(0.7)
Icon:setPosition(ccp(0, 60))
Icon:setName(“Image_EquipIcon”)
button:addChild(Icon)
local lv = ListView:create()
lv:setDirection(SCROLLVIEW_DIR_HORIZONTAL)
lv:setTouchEnabled(true)
lv:setBounceEnabled(true)
lv:setSize(CCSizeMake(420*3, 600))
lv:setItemModel(button)
–lv:setClippingType(LAYOUT_CLIPPING_SCISSOR)
lv:setClippingEnabled(true)
local layout = Layout:create()
–layout:setClippingType(LAYOUT_CLIPPING_SCISSOR)
layout:setClippingEnabled(true)
layout:setSize(CCSizeMake(420*3, 600))
layout:addChild(lv)
layout:setPosition(ccp(0, -300))
sceneGame:addChild(layout)
for i =1, 5 do
lv:pushBackDefaultItem()
local widget = lv:getItem(i-1)
local Image_EquipIcon = tolua.cast(widget:getChildByName(“Image_EquipIcon”), “ImageView”)
Glittering(Image_EquipIcon)
end
CCDirector:sharedDirector():runWithScene(sceneGame)
end
xpcall(main, G__TRACKBACK)
--------------求助 上面代码在cocos2d-x 2.2.3下面显示异常问题,如果把上面两行注释打开则显示正常
如果ListView和layout不开启裁剪 或者都设置裁剪方式为LAYOUT_CLIPPING_SCISSOR 则正常显示
如果开启裁剪 layout默认的裁剪模式LAYOUT_CLIPPING_STENCIL会导致很多控件无法显示
附近有相应代码 测试代码和资源 可以在2.2.3下 解压到Lua\HelloLua\Resources运行。
备注:需要自己导出 CCClippingNode类
跪求官方或者高手 目前lz需要设置裁剪模式为LAYOUT_CLIPPING_STENCIL
怎样修改才可以正常显示其他控件
