Quick-cocos2d-x3.3 Study (十七)--------- 触摸事件
触摸事件
1.先在ctor()函数中创建一个能够接受触摸事件的layer,然后开启触摸事件,调用回调函数
1 -- 添加触摸事件 2 -- 这里创建了一个能够接受触摸事件的layer,因为触摸事件不能直接添加到层中 3 -- 所以这里创建了一个带有颜色的layer来接受触摸事件 4 self.touchLayer = display.newColorLayer( cc.c4b( 0, 255, 0, 150 ) ) 5 :addTo( self ) 6 -- 添加触摸事件有两种方法 7 -- 第一种方法是写回调函数的 8 -- 将layer添加触摸事件的监听 9 self.touchLayer:addNodeEventListener( cc.NODE_TOUCH_EVENT, function ( event ) 10 -- body 11 -- 这里的onTouch方法是我们自己定义的 12 -- 参数分别是,触摸的事件、触摸的x、触摸的y 13 return self:onTouch( event.name, event.x, event.y ) 14 end) 15 -- 开启触摸功能 16 self.touchLayer:setTouchEnabled( true ); 17 18 19 20 21 22 23 24 25 26 27 -- 触摸事件的回调函数 28 function GameScene:onTouch( event, x, y ) 29 -- body 30 -- 触摸开始 31 if event == "began" then 32 print( "---- event.name = ----", event ) 33 print( "---- event.x = ----", x ) 34 print( "---- event.y = ----", y ) 35 -- 让事件向下传递 36 return true 37 -- 触摸移动 38 elseif event == "moved" then 39 --todo 40 print( "---- event.name = ----", event ) 41 print( "---- event.x = ----", x ) 42 print( "---- event.y = ----", y ) 43 -- 触摸结束 44 elseif event == "ended" then 45 --todo 46 print( "---- event.name = ----", event ) 47 print( "---- event.x = ----", x ) 48 print( "---- event.y = ----", y ) 49 -- 触摸取消 50 elseif event == "cancelled" then 51 --todo 52 print( "---- event.name = ----", event ) 53 print( "---- event.x = ----", x ) 54 print( "---- event.y = ----", y ) 55 end 56 end
效果图:
2. 闭包函数实现
直接在ctor中添加如下内容
1 -- 添加触摸事件 2 -- 这里创建了一个能够接受触摸事件的layer,因为触摸事件不能直接添加到层中 3 -- 所以这里创建了一个带有颜色的layer来接受触摸事件 4 self.touchLayer = display.newColorLayer( cc.c4b( 0, 255, 0, 150 ) ) 5 :addTo( self ) 6 -- 添加触摸事件有两种方法 7 -- 第一种方法是写回调函数的 8 -- 将layer添加触摸事件的监听 9 self.touchLayer:addNodeEventListener( cc.NODE_TOUCH_EVENT, function ( event ) 10 -- -- body 11 -- -- 这里的onTouch方法是我们自己定义的 12 -- -- 参数分别是,触摸的事件、触摸的x、触摸的y 13 -- return self:onTouch( event.name, event.x, event.y ) 14 print("---- 闭包函数 ----") 15 if event.name == "began" then 16 print( "---- event.name = ----", event.name ) 17 print( "---- event.x = ----", event.x ) 18 print( "---- event.y = ----", event.y ) 19 20 elseif event.name == "moved" then 21 --todo 22 print( "---- event.name = ----", event.name ) 23 print( "---- event.x = ----", event.x ) 24 print( "---- event.y = ----", event.y ) 25 26 elseif event.name == "ended" then 27 --todo 28 print( "---- event.name = ----", event.name ) 29 print( "---- event.x = ----", event.x ) 30 print( "---- event.y = ----", event.y ) 31 32 elseif event.name == "cancelled" then 33 --todo 34 print( "---- event.name = ----", event.name ) 35 print( "---- event.x = ----", event.x ) 36 print( "---- event.y = ----", event.y ) 37 end 38 39 return true 40 41 end) 42 -- 开启触摸功能 43 self.touchLayer:setTouchEnabled( true );
效果图: