求问个关于ccui.scrollview的问题

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

看不懂你的问题。。。上代码?

这是拖动的:
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也应该有才是。

关于label我是看的这个帖子:
http://www.cocoachina.com/bbs/read.php?tid-226051-keyword-order.html

图是这样的:

scrollView在哪?

还有为什么sprite是Scroll的子节点。Panel是Scroll的父节点,Panel能够挡住Sprite。

牌左边是scroll,右边是panel,像是scrollview限定了卡牌的显示范围,之前好像在studio里添加scrollview的时候也遇到过这个问题,好像和设置裁剪有关?

ScrollView中的内容默认只能在ScrollView中显示。

试下调ScrollView::setClippingEnabled(false)

1赞

:6: :6: 终于好了,多谢!!!!

额,又出现个新的问题,,,就是scroll的显示区域外的卡牌全部显示出来了。。。那就只能在添加卡牌的时候判断卡牌位置,如果超过scroll范围就不显示,然后在scroll滑动监听里面判断卡牌的位置然后显示?感觉应该没这么麻烦吧,,,:12::9:

是要自己判断。你的需求并不是通用需求。

OK,多谢啦!