Quick 3.3 final 加载ccs的变化

1,用self._topUIWidget = ccs.GUIReader:getInstance():widgetFromJsonFile("mapTopUI.json")就还是用的以前c++的那套,时间机制和现有的quick不兼容。

所以得用

local node = cc.uiloader:load("testPanel.json")
self:addChild(node,0)

button的监听addTouchEventListener已经不能使用了

换为了

local button = cc.uiloader:seekNodeByName(self,"Button")
   button:onButtonClicked(function(event)
   print("click")
end)

吞噬事件来实现面板弹出遮挡住下面的不响应事件只能在新的quick时间机制下用。

如果用旧的ccs那套东西,只能让root设置为可响应

注意ccs和quick3.3 final不兼容,尽量只用一种。

按钮一张图片下点击不变大了。

local ShopPanel = require("src.app.scenes.ShopPanel")
local MainScene = class("MainScene", function()
    return display.newScene("MainScene")
end)

function MainScene:ctor()

--    self._topUIWidget = ccs.GUIReader:getInstance():widgetFromJsonFile("testPanel.json");
--    self:addChild(self._topUIWidget,0)


    local node = cc.uiloader:load("testPanel.json")
    self:addChild(node,0)
    
--    local function touchEvent(sender,eventType)
--        if eventType == ccui.TouchEventType.ended then
--            print("clicked");
--        end
--    end
    
    local button = cc.uiloader:seekNodeByName(self,"Button")
    button:onButtonClicked(function(event)
        print("click")
    end)
    
    local label = cc.uiloader:seekNodeByName(self,"fntLabel")
    label:setString(60);
    
    local AtlasLabel = cc.uiloader:seekNodeByName(self,"AtlasLabel")
    AtlasLabel:setString(60);
    
    local listView = cc.uiloader:seekNodeByName(self,"ListView")
    
--    addTouchEventListener已经不能使用了
--    local function touchEvent(sender,eventType)
--        if eventType == ccui.TouchEventType.ended then
--            print("click");
--        end
--    end
--    local button = cc.uiloader:seekNodeByName(self,"Button_2")
--    button:addTouchEventListener(touchEvent)
        
    local p = ShopPanel.new()
    self:addChild(p,20)
end

function MainScene:addHomebtnquick()
    self._homeBtn = cc.ui.UIPushButton.new({normal="ItemSelect.png"})
        :onButtonClicked(function()
            print("homebtn click")
        end)
        :addTo(self)
        :pos(display.cx,display.cy)
end

function MainScene:onEnter()
end

function MainScene:onExit()
end

return MainScene

panel:代码

local ShopPanel = class("ShopPanel",function()
    return display.newColorLayer(cc.c4b(255,255,255,128))
end)

function ShopPanel:ctor()
    --    self:initUI()
    self:addTouch()
end

function ShopPanel:addTouch()
    self:setTouchEnabled(true)
    self:setTouchSwallowEnabled(true)
    --[[因为暂停层的图片是覆盖在游戏层上面的,
    如果我们不把游戏层的触摸事件拦截的话,会触发游戏层的触摸事件。
    addTouch就是为了在暂停层拦截掉所有的触摸事件。widget的root要设置成可交互]]
    self:addNodeEventListener(cc.NODE_TOUCH_EVENT,function(event) 
        dump(event)
    end)
end

function ShopPanel:initUI()
    
    self.lv = cc.ui.UIListView.new {
        -- bgColor = cc.c4b(200, 200, 200, 120),
        viewRect = cc.rect(0, 0, 420, 380),
        direction = cc.ui.UIScrollView.DIRECTION_VERTICAL}
--        :onTouch(handler(self, self.touchListener))
        :addTo(self)

    -- add items
    for i=1,8 do
        local item = self.lv:newItem()
        local content = cc.ui.UILabel.new(
            {text = "点击删除它DE"..i,
                size = 20,
                align = cc.ui.TEXT_ALIGN_CENTER,
                color = display.COLOR_WHITE})
                
        item:addContent(content)
        item:setItemSize(400, 80)

        self.lv:addItem(item)
    end
    self.lv:reload()
    
end

return ShopPanel
原文地址:https://www.cnblogs.com/as3lib/p/4197010.html