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