luabinding 中用Scrollview实现pageview的翻页效果

来源:互联网 发布:玲珑醉梦网络剧百度云 编辑:程序博客网 时间:2024/05/17 21:57

在开发聊天系统的表情界面时,首先想到的是pageview这样可以直接打到滑动时可以将整个表情界面滑动,但是目前pageview的监听事件的状态只有滚动一种状态,这样的如果要实现在页面滚动的情状下,即使点击到上面的表情也不能将表情转化为字符串显示在输入框内,在策划提出这个需求的时候,我一下不知道该怎么办啦。只有一个状态即使是我让它在翻页时不能转换,该怎么置回来呢?

最后狠下心不用pageview啦,用scrollview,但是这样问题又来了,怎么让它达到和pageview一样的效果的,怎样让它滑动的时候不能被截掉?下 面的方法可以实现效果

local function fnScrollViewScrolling(sender,eventType )
    if eventType == 10 then
        local bposX = sender:getPercentage()*100
         _bPosX = bposX
    end
    print("-------bposX=",_bPosX)
    if ccui.ScrollviewEventType.scrolling == eventType or eventType == 9 then
        _IsRolling = true
        local edposX = sender:getPercentage()*100
        print("-------edposX=",edposX)
        local dispox = edposX - _bPosX
        print("--------dispox=",dispox)
        if dispox < 0 then
            _currPercent = _currPercent - _addPercent
            _currCount = _currCount +1
            if _currPercent >= 100 then
                _currPercent = 100
                _currCount = _num
            end
        else
            _currPercent = _currPercent + _addPercent
            _currCount = _currCount-1
            if _currPercent <= 0 then
                _currPercent = 0
                _currCount = 1
            end
        end
        sender:scrollToPercentHorizontal(_currPercent,0.1,false)
        print("--------_currPercent=,_currCount=",_currPercent,_currCount)
    elseif eventType == 12 then
        print("--------eventType------------12--")
        _IsRolling = false
    end
   end

关键的是增量addPercent,而这个如下获得 local totalNum = DB_Game_constant.getArrDataByField("name","expression_num")
 --画表情页面
function creatEmojiPage( ... )
    local totalNum = DB_Game_constant.getArrDataByField("name","expression_num")
    local num = math.ceil((totalNum[1].price-1)/15)
    _num = num
    local pageView = _emojiNode:getChildByName("emojipage")
    require "src/libs/LuaListView"
    if  not pageView then
        pageView = LuaListView:create()
        pageView:setTouchEnabled(true)
        pageView:setSize(cc.size(356, 244))
        pageView:setAnchorPoint(0.5,0.5)
        pageView:setPosition(_emojiNode:getContentSize().width/2,_emojiNode:getContentSize().height/2)
        pageView:setName("emojipage")
        pageView:addEventListenerListView(fnScrollViewScrolling)
        pageView:setDirection(ccui.ScrollViewDir.horizontal)
        _emojiNode:addChild(pageView)
    else
        pageView:removeAllItems()
        pageView:setDirection(ccui.ScrollViewDir.horizontal)
    end
    for i = 0 , num-1 do
        local layout = ccui.Layout:create()
        layout:setSize(cc.size(356, 244))
        local j--行数
        local xpoint --每一行对应的列数除去5所得的余数
        for k=1,15 do
            if k >=1 and k<= 5 then
                j = 0
            elseif k>=6 and k<=10 then
                j=1
            elseif k>=11 and k<= 15 then
                j=2
            end
            xpoint = k%5
            local node = createEmojItem(15*i+k)
            node:setAnchorPoint(0,1)
            layout:addChild(node)
            if xpoint~= 0 then
                node:setPosition((xpoint-1)*62+20-24+20,(235-10)-j*(62+10)-33+21)
            else
                node:setPosition(4*62+20-24+20,(235-10)-j*(62+10)-33+21)
            end    
        end          
        pageView:pushBackCustomItem(layout)
    end
    local width = pageView:getInnerContainer():getContentSize().width-356
    _addPercent = (356/width)*(-100)
    print("-------_addPercent=",_addPercent)
    _currCount = 1
    --画页面小按钮
    paintPoint(num,_emojiNode)
    --默认设第一个
    _fnUpPagePoint(_currCount)
end

这样就可以实现用scrollview达到pageview的效果啦。

0 0
原创粉丝点击