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 );


效果图:

 

posted @ 2015-09-21 23:27  silent-bobo  阅读(692)  评论(0编辑  收藏  举报