zoukankan      html  css  js  c++  java
  • cocos2d JS touch屏幕点击事件监听 cc.EventListener.TOUCH

    
    
     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  
    
    
  • 相关阅读:
    linux awk命令详解
    Linux 大页面使用与实现简介(转)
    二层设备与三层设备的区别--总结
    Windows下的cd命令
    linux常用命令
    上班第一天
    linux 内核移植和根文件系统的制作
    Sizeof与Strlen的区别与联系
    嵌入式软件工程师面试题
    SpringBoot简单打包部署(附工程)
  • 原文地址:https://www.cnblogs.com/luorende/p/7203569.html
Copyright © 2011-2022 走看看