方式1:
local MainScene = class(
"MainScene", cc.
load(
"mvc").ViewBase)
function MainScene:onCreate()
-- add background image
local layer =
cc.Layer:create()
layer:addTo(self)
layer:addChild(display.newSprite("bg_0.jpg"):move(display.center))
-- add HelloWorld label
--local startBtn = cc.Label:createWithSystemFont("开始", "Arial", 20)
local startBtn = cc.Sprite:create(
"GameScene_nn.png", cc.rect(
760,
0,
250,
80))
startBtn:setScale(0.25,
0.25)
startBtn:move(display.center)
layer:addChild(startBtn)
--local tmpLayer = cc.Layer.create()
local startLb = cc.Label:createWithSystemFont(
"开始",
"Arial",
40)
startBtn:addChild(startLb)
startLb:setPosition(120,
50)
local function touchBegan(touch, event)
--取得注册事件的节点,这里是layer
local node =
event:getCurrentTarget()
--touch:getPreviousLocationInView():取得之前触摸点的位置信息 UI坐标
--getPreviousLocation() :OpenGL坐标
--getLocationInView():当前坐标
--getLocation():
print(touch)
return false
end
local function touchMoved(touch, event)
return false
end
local function touchEnded(touch, event)
return false
end
local function touchCanceled(touch, event)
return false
end
local listen =
cc.EventListenerTouchOneByOne:create()
listen:registerScriptHandler(touchBegan, cc.Handler.EVENT_TOUCH_BEGAN)
listen:registerScriptHandler(touchMoved,cc.Handler.EVENT_TOUCH_MOVED)
listen:registerScriptHandler(touchEnded,cc.Handler.EVENT_TOUCH_ENDED)
listen:registerScriptHandler(touchCanceled,cc.Handler.EVENT_TOUCH_CANCELLED)
local eventDispatcher =
layer:getEventDispatcher()
--节点添加的先后顺序为优先级的添加监听器方式,节点越上层,优先级越高
--eventDispatcher:addEventListenerWithSceneGraphPriority(listen,layer)
--void EventDispatcher::addEventListenerWithFixedPriority(EventListener* listener, int fixedPriority)
--固定优先级的添加监听器方式,fixedPriority>0, 数值越小,优先级越高
eventDispatcher:addEventListenerWithFixedPriority(listen,
1)
end
return MainScene
方式2:
local function onTouch(eventType, x, y)
if eventType ==
"began" then
return true
elseif eventType ==
"ended" then
return onTouchEnded(x, y)
end
end
layer:setTouchEnabled(true)
layer:registerScriptTouchHandler(onTouch)
示例: 按钮点击后大小变化
local MainScene = class(
"MainScene", cc.
load(
"mvc").ViewBase)
function MainScene:onCreate()
-- add background image
local layer =
cc.Layer:create()
layer:addTo(self)
layer:addChild(display.newSprite("bg_0.jpg"):move(display.center))
-- add HelloWorld label
--local startBtn = cc.Label:createWithSystemFont("开始", "Arial", 20)
local startBtn = cc.Sprite:create(
"GameScene_nn.png", cc.rect(
760,
0,
250,
80))
startBtn:setScale(0.25,
0.25)
startBtn:move(display.center)
layer:addChild(startBtn)
--local tmpLayer = cc.Layer.create()
local startLb = cc.Label:createWithSystemFont(
"开始",
"Arial",
40)
startBtn:addChild(startLb)
startLb:setPosition(120,
50)
local startBtn1 = cc.Sprite:create(
"GameScene_nn.png", cc.rect(
760,
0,
250,
80))
startBtn1:setScale(0.25,
0.25)
startBtn1:setPosition(cc.p(200,
100))
--startBtn1:move(display.center)
layer:addChild(startBtn1)
local function touchBegan(touch, event)
local node =
event:getCurrentTarget()
local location =
node:convertToNodeSpace(touch:getLocation())
local targetSize =
node:getContentSize()
local rect = cc.rect(
0,
0,targetSize.width, targetSize.height)
if cc.rectContainsPoint(rect, location)
then
node:setScale(0.21,
0.21)
if node==startBtn
then
print(
"click button 1")
else
print(
"click button 2")
end
end
return true
end
local function touchMoved(touch, event)
print(
"touchMoved")
return false
end
local function touchEnded(touch, event)
local node =
event:getCurrentTarget()
node:setScale(0.25,
0.25)
return true
end
local function touchCanceled(touch, event)
print(
"touchCanceled")
return false
end
local listen =
cc.EventListenerTouchOneByOne:create()
listen:registerScriptHandler(touchBegan, cc.Handler.EVENT_TOUCH_BEGAN)
listen:registerScriptHandler(touchMoved,cc.Handler.EVENT_TOUCH_MOVED)
listen:registerScriptHandler(touchEnded,cc.Handler.EVENT_TOUCH_ENDED)
listen:registerScriptHandler(touchCanceled,cc.Handler.EVENT_TOUCH_CANCELLED)
--local eventDispatcher = layer:getEventDispatcher()
local eventDispatcher =
cc.Director:getInstance():getEventDispatcher()
eventDispatcher:addEventListenerWithSceneGraphPriority(listen,startBtn)
local listen1 =
listen:clone()
eventDispatcher:addEventListenerWithSceneGraphPriority(listen1,startBtn1)
end
return MainScene
转载于:https://www.cnblogs.com/zhangthree/p/11059353.html
相关资源:数据结构—成绩单生成器