您的位置:首页 > 移动开发 > Cocos引擎

cocos2d JS touch屏幕点击事件监听 cc.EventListener.TOUCH

2017-07-19 00:56 806 查看
1 var self = this;
2 this.touchListener = cc.EventListener.create({
3     event: cc.EventListener.TOUCH_ONE_BY_ONE,
4 /*
5 可选event类型列表:
6
7 cc.EventListener.TOUCH_ONE_BY_ONE (单点触摸)
8 cc.EventListener.TOUCH_ALL_AT_ONCE (多点触摸)
9 cc.EventListener.KEYBOARD (键盘)
10 cc.EventListener.MOUSE (鼠标)
11 cc.EventListener.ACCELERATION (加速计)
12 cc.EventListener.CUSTOM (自定义)
13
14 */
15     swallowTouches: true,  // 设置是否吞没事件,在 onTouchBegan 方法返回 true 时吞掉事件,不再向下传递。
16     onTouchBegan:function(touch, event)    //实现 onTouchBegan 事件处理回调函数
17     {
18         19         20
21         return self.checkHit(touch.getLocation());  //传递坐标
22     },
23
24     onTouchMoved:function(touch, event)   //实现onTouchMoved事件处理回调函数, 触摸移动时触发
25     {
26         self.movePickedHitTile(touch.getLocation());
27         return true;
28     },
29
30     onTouchEnded:function(touch, event)// 实现onTouchEnded事件处理回调函数
31     {
32         self.dropTile(touch.getLocation());
33         return true;
34     }
35 });
36
37 cc.eventManager.addListener(this.touchListener, node);  // 添加监听器到管理器
38 /*
39 这里的cc.eventManager 是一个单例对象,可直接拿来使用。
40 通过调用 addListener 函数可以将listener加入到管理器中。
41 需要注意的是第二个参数
42 如果传入的是一个Node对象,则加入的是SceneGraphPriority(精灵以显示优先级) 类型的listener
43 如果是一个数值类型的参数,则加入到的是FixedPriority 类型的listener。
44 */

onTouchBegan:
1 checkHit:function(event)
2 {
3   var target = event.getCurrentTarget();  // 获取事件所绑定的 target, 通常是cc.Node及其子类
4
5     // 获取当前触摸点相对于按钮所在的坐标
6    var locationInNode = target.convertToNodeSpace(touch.getLocation());
7      var s = target.getContentSize();
8     var rect = cc.rect(0, 0, s.width, s.height);
9
10     if (cc.rectContainsPoint(rect, locationInNode)) {       // 判断触摸点是否在按钮范围内
11       console.log("sprite began... x = " + locationInNode.x + ", y = " + locationInNode.y);
12       target.opacity = 180;
13        return true;
14       }
15     return false;
16 }

onTouchMoved:
1 movePickedHitTile:function(event)
2 {
3   var target = event.getCurrentTarget();
4    var delta = touch.getDelta();              //获取事件数据: delta
5    target.x += delta.x;
6    target.y += delta.y;
7 },

onTouchEnded:
1 dropTile:function(pt)
2 {
3 // this.showDiscardTip(false);
4 //
5 // this.pickedTile.setScale(1);
6 //
7 // //出牌
8 // if(this.discardable(pt))
9 // {
10 //     this.discard();
11 // }
12 // else
13 // {
14 //     if(this.hitTestTile(this.hitTile, pt))
15 //     {
16 //         var tileSize = mb.getTileSize(this.hitTile.pos, this.hitTile.state);
17 //         var ptWorld = this.hitTile.convertToWorldSpaceAR(cc.p(0, 0));
18 //         this.pickedTile.x = ptWorld.x;
19 //         this.pickedTile.y = ptWorld.y + tileSize.height / 3;
20 //     }
21 //     else
22 //     {
23 //         mb.TilePool.getInstance().restoreTile(this.pickedTile);
24 //         this.pickedTile = null;
25 //
26 //         this.hitTile.setVisible(true);
27 //         this.hitTile = null;
28 //     }
29 // }
30
31 },
32

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: