RT,是这样的,我用studio做了个panel,然后tolua.cast成layer,然后用layer:addChild了一个ccui.ScrollView,在这个scrollview里添加了sprite,然后把里面的sprite拖动到外面时会被layer挡住,请问应该如何解决额?(本来想的是把sprite的globalzorder提高,但是我的sprite里面添加了label,然后label无法设置globalzorder,所以这个方法貌似不行)多谢各位啦

看不懂你的问题。。。上代码?
这是拖动的:
local function onTouchMoved(touch, event)
local card = event:getCurrentTarget()
local posX, posY = card:getPosition()
local delta = touch:getDelta()
if delta then
if card.lock:isVisible() == true or card.mask:isVisible() == true then
cclog("unmoveable!")
else
--
card:setGlobalZOrder(100)
card.cardSp:setGlobalZOrder(100)
card.crystalSp:setGlobalZOrder(100)
card.crystalVal:setGlobalZOrder(100) --unable to setGlobalZOrder for a label object
if card.type == CardType.fighter then
card.attackSp:setGlobalZOrder(100)
card.attackVal:setGlobalZOrder(100)
card.bloodSp:setGlobalZOrder(100)
card.bloodVal:setGlobalZOrder(100)
end
]]
card:setPosition(cc.p(posX + delta.x, posY + delta.y))
end
bUnmove = false
else
bUnmove = true
end
就是拖出scrollview范围的时候卡牌会被layer挡住,然后label设置globalzorder无效。。。
不管你的label
单纯设置sprite能成功吗?
panel是Scroll的父节点吗?为什么scroll里边的东西会被panel挡到。。是不是哪里说错了。
单设置sprite是好的,我是这样加的 :
panel -> 空layer -> scrollView
大概是这样的。。。
function TaopaiLayer:create()
self.widget = ccs.GUIReader:getInstance():widgetFromJsonFile(“TaopaiLayer_1/TaopaiLayer_1.ExportJson”)
local layer = tolua.cast(self.widget, “cc.Layer”)
local scrollLayer2 = ScrollTableLayer:createScroll2()
self:init(layer)
layer:addChild(lab)
layer:addChild(labAmount)
layer:addChild(scrollLayer2, 0, _G.tagScrollLayer2)
return layer
end
好像和scrollview的裁剪有关,,,,
我是这样创建的:
local scrollView = ccui.ScrollView:create()
scrollView:setTouchEnabled(true)
scrollView:setDirection(SCROLLVIEW_DIR_HORIZONTAL)
scrollView:setBounceEnabled(true)
scrollView:setContentSize(spScrollBg:getContentSize())
scrollView:setInnerContainerSize(cc.size(150 * 12, spScrollBg:getContentSize().height))
scrollView:setPosition(cc.p(self.pos.x, self.pos.y))
scrollView:addTouchEventListener(self.scrollEvent)
self:addChild(scrollView, 0, _G.tagScrollView1)
能给个图吗?
被挡住是什么个样子?
为什么sprite是Scroll的子节点。Panel是Scroll的父节点。Panel能够挡住Sprite。
还有sprite和label都是继承自node的。
而setGlobalZOrder是node的方法。label也应该有才是。
scrollView在哪?
还有为什么sprite是Scroll的子节点。Panel是Scroll的父节点,Panel能够挡住Sprite。
牌左边是scroll,右边是panel,像是scrollview限定了卡牌的显示范围,之前好像在studio里添加scrollview的时候也遇到过这个问题,好像和设置裁剪有关?

ScrollView中的内容默认只能在ScrollView中显示。
试下调ScrollView::setClippingEnabled(false)
终于好了,多谢!!!!
额,又出现个新的问题,,,就是scroll的显示区域外的卡牌全部显示出来了。。。那就只能在添加卡牌的时候判断卡牌位置,如果超过scroll范围就不显示,然后在scroll滑动监听里面判断卡牌的位置然后显示?感觉应该没这么麻烦吧,,,

是要自己判断。你的需求并不是通用需求。
OK,多谢啦!
