フレームごとにitemを作成

6894 ワード

--  
function UIBagController:onLoadTest()
    self.goodsprop = DB.getTable("goodsprop");
    
    local itemAmount = 50;
    --  
    local nAmount = 0;
    if itemAmount % self.m_nRColumn == 0 then
        nAmount = math.modf( itemAmount / self.m_nRColumn );
    else
        nAmount = math.modf( itemAmount / self.m_nRColumn + 1 );
    end
    local nHeigh = nAmount * self.m_nHeigh;
    self.m_nInnerHeigh = nHeigh;
    local size = self.scrollPanel:getInnerContainerSize();
    if nHeigh < size.height then
        nHeigh = size.height;
    end
    self.scrollPanel:setInnerContainerSize(CCSizeMake(size.width, nHeigh));
    --print("== ==" .. size.width .. " " .. nHeigh)
    local nWidth = size.width;
    local nPosX = 0;
    local nPosY = 0;
    local nIndex = 0;
    nHeigh = nHeigh - self.m_nHeigh;
    local nItemWidth = size.width / self.m_nRColumn;
    if itemAmount ~= nil then
        self.ScheduleId = CCDirector:sharedDirector():getScheduler():scheduleScriptFunc(function ( )
            print("nIndex " .. nIndex)
            print("itemAmount " .. itemAmount)
            if nIndex >= itemAmount then
                CCDirector:sharedDirector():getScheduler():unscheduleScriptEntry(self.ScheduleId);
            end
            local info = self.goodsprop[nIndex + 1];
            local item = self.ImageView_item:clone();
            if nIndex % self.m_nRColumn == 0 then
                nPosY = nHeigh - math.modf(nIndex / self.m_nRColumn) * self.m_nHeigh;
                local itemSize = item:getSize();
                nPosY = nPosY + itemSize.height / 2;
            end
            nPosX = self.m_nPosXStart + math.ceil(nIndex % self.m_nRColumn) * nItemWidth;
            item:setPosition(ccp(nPosX, nPosY));
            item:setVisible(true);
            self.scrollPanel:addChild(item);
            self:loadItem(item);

            nIndex = nIndex + 1;
        end, 0, false); 
    end
end

--  
function UIBagController:loadItem(uiwidget)
    local imgItem = tolua.cast(UIHelper:seekWidgetByName(uiwidget, "ImageView_Item"), "ImageView");
    imgItem:loadTexture(ItemM:getIconPath(21419))
end