RoleTequanView.lua 4.3 KB
local RoleTequanView = dialog.uinode("ui/dress/RoleVipTequanLayer.csb", import(".BaseViewNew"))

function RoleTequanView:ctor()
    RoleTequanView.super.ctor(self);
end

function RoleTequanView:init(_nodes, _update_nodes_func, _close_func)
    self.nodes = _nodes;
    self.update_nodes_func = _update_nodes_func;
    self.close_fun = _close_func;
    self.scrollView = self:getChildByName("ScrollView");

    self.nodes_copy = TableUtil.copyTab(self.nodes);

    self:update();
end

function RoleTequanView:update()
    self.scrollView:removeAllChildren();

    local _nodes = { };

    self.cnt = 9;
    local _y = math.floor((self.cnt - 1) / 3) * 190 + 190;
    if _y < 550 then
        _y = 550;
    end

    for i = 0, self.cnt - 1 do
        local item = cc.CSLoader:createNode("ui/dress/RoleVipTequanItem.csb");
        item:setPosition(cc.p(80 + i % 3 * 260, _y -(math.floor(i / 3 + 1) * 190)));
        item:setLocalZOrder(self.cnt - i);
        self.scrollView:addChild(item);

        item:getChildByName("img_flag_tequan"):setVisible(false);

        local btn = item:getChildByName("btn");
        btn:setSwallowTouches(false);
        btn.id =(i + 1);
        item.id =(i + 1);
        item.index = i + 1;
        local icon_url = "res/ui/dress/img_tequan_" .. item.id .. ".png";
        if cc.FileUtils:getInstance():isFileExist(icon_url) then
            item:getChildByName("img"):setSpriteFrame(cc.Sprite:create(icon_url):getSpriteFrame());
        end
        btn:addTouchEventListener( function(ref, type) self:onButtonClick(ref, type, handler(self, self.onItemClick)) end);
        item.fn = function()
            self:onItemClick(btn);
        end;
        _nodes[#_nodes + 1] = item;
    end

    self.nodes = TableUtil.merge(self.nodes_copy, { _nodes });
    if self.update_nodes_func then
        self.update_nodes_func(self.nodes);
    end
    self.scrollView:setInnerContainerSize(cc.size(950, _y));
end

function RoleTequanView:onItemClick(node)
    local reciever = nil;
    if node.id == 1 then
        reciever = require("app.views.view.XyxView"):show();
        cc.Director:getInstance():getRunningScene().keypadManager:addKeypadReceiver(reciever);
    elseif node.id == 2 then
        reciever = require("app.views.view.XyxView"):show();
        cc.Director:getInstance():getRunningScene().keypadManager:addKeypadReceiver(reciever);
    elseif node.id == 3 then
        local reciever = require("app.views.view.ActivityView"):show("ActivityVipView");
        cc.Director:getInstance():getRunningScene().keypadManager:addKeypadReceiver(reciever);
    elseif node.id == 4 then
        local reciever = require("app.views.view.ShopView"):show();
        cc.Director:getInstance():getRunningScene().keypadManager:addKeypadReceiver(reciever);
    elseif node.id == 5 then
        if self.close_fun then
            self.close_fun();
        end
        local reciever = require("app.views.view.RoleMainView"):show(2);
        cc.Director:getInstance():getRunningScene().keypadManager:addKeypadReceiver(reciever);
    elseif node.id == 6 then
        local reciever = require("app.views.view.AchievementView"):show();
        cc.Director:getInstance():getRunningScene().keypadManager:addKeypadReceiver(reciever);
    elseif node.id == 7 then
        local reciever = require("app.views.view.ActivityView"):show("ActivityVipCycleView");
        cc.Director:getInstance():getRunningScene().keypadManager:addKeypadReceiver(reciever);
    elseif node.id == 8 then
        local reciever = require("app.views.view.ActivityView"):show();
        cc.Director:getInstance():getRunningScene().keypadManager:addKeypadReceiver(reciever);
    end
end

function RoleTequanView:onItemOver(node)
    if node.id then

    end
end

function RoleTequanView:onItemOut(node)
    if node.id then

    end
end

function RoleTequanView:setScrollPosition(node)
    local scrollSize = self.scrollView:getContentSize();

    local len = math.floor((self.cnt - 1) / 3) * 190 + 190;
    local currentY = len -(node:getPositionY() + 190);
    if currentY > len - scrollSize.height then
        currentY = len - scrollSize.height;
    elseif currentY < 0 then
        currentY = 0;
    end

    local per = 0;
    if len - scrollSize.height > 0 then
        per = currentY * 100 /(len - scrollSize.height);
    end
    self.scrollView:scrollToPercentVertical(per, 0.5, true);
end

return RoleTequanView