lufy's legend

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 7452|回复: 4
打印 上一主题 下一主题

事件,点击屏幕触发事件的bug

[复制链接]

4

主题

0

好友

36

积分

士兵

Rank: 1

跳转到指定楼层
楼主
发表于 2015-6-3 09:13:32 |只看该作者 |倒序浏览
http://blog.csdn.net/lufy_legend/article/details/7654607
昨天学习了这篇文章创建刚体的文章,在本地测试通过,拿到chrome里模拟手机端时,出现了问题。

本来应该是点击屏幕才触发事件,但是点击其他地方也触发了。

如图
360反馈意见截图16220426377762.png
backLayer.addEventListener(LMouseEvent.MOUSE_UP, add);本来点击1,即舞台层才触发点击。
bug复现:第一次点击,只有点击1才触发,点击一次1位置后,再点击2或者1都会触发。

请问这是什么原因呢?

还是说屏幕backLayer层大小位置变了?





回复

使用道具 举报

37

主题

8

好友

9313

积分

诸侯王

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

沙发
发表于 2015-6-3 09:29:28 |只看该作者
至少我得知道你代码怎么写的,backLayer上都有什么东西才能回答吧
不回答与技术和引擎不相关的问题
回复

使用道具 举报

4

主题

0

好友

36

积分

士兵

Rank: 1

板凳
发表于 2015-6-3 09:54:25 |只看该作者
本帖最后由 wklc2015 于 2015-6-3 10:02 编辑
lufy 发表于 2015-6-3 09:29
至少我得知道你代码怎么写的,backLayer上都有什么东西才能回答吧
  1. init(10, "mylegend", 300, 300, main);
  2.         var backLayer, cLayer, wallLayer, bitmap, loadingLayer;
  3.         var imglist = {};
  4.         var imgData = new Array(
  5.                 {name : "bird1", path : "./img/bird1.png"},
  6.                 {name : "bird2", path : "./img/bird2.png"},
  7.                 {name : "stage01", path : "./img/stage01.png"}
  8.         );
  9.         function main() {
  10.                 LGlobal.setDebug(true);

  11.                 backLayer = new LSprite();
  12.                 addChild(backLayer);

  13.                 loadingLayer = new LoadingSample3();
  14.                 backLayer.addChild(loadingLayer);
  15.                 LLoadManage.load(
  16.                         imgData,
  17.                         function(progress) {
  18.                                 loadingLayer.setProgress(progress);
  19.                         },
  20.                         function(result) {
  21.                                 imglist = result;
  22.                                 backLayer.removeChild(loadingLayer);
  23.                                 loadingLayer = null;
  24.                                 gameInit();
  25.                         }
  26.                 );
  27.         }
  28.         function gameInit() {
  29. //                console.log(new LBox2d())
  30.                 LGlobal.box2d = new LBox2d();
  31.                 wallLayer = new LSprite();
  32.                 wallLayer.graphics.drawRect(0, "#000000", [0, 0, 300, 300], true, "#cccc80");
  33.                 wallLayer.alpha = 1;
  34.                 backLayer.addChild(wallLayer);
  35.                 //top
  36.                 wallLayer = new LSprite();
  37.                 wallLayer.x = 150;
  38.                 wallLayer.y = 0;
  39.                 backLayer.addChild(wallLayer);
  40.                 wallLayer.addBodyPolygon(300, 0, 0);
  41.                 //left
  42.                 wallLayer = new LSprite();
  43.                 wallLayer.x = 0;
  44.                 wallLayer.y = 150;
  45.                 backLayer.addChild(wallLayer);
  46.                 wallLayer.addBodyPolygon(0, 300, 0);
  47.                 //bottom
  48.                 wallLayer = new LSprite();
  49.                 wallLayer.x = 150;
  50.                 wallLayer.y = 300;
  51.                 backLayer.addChild(wallLayer);
  52.                 wallLayer.addBodyPolygon(300, 0, 0);
  53.                 //right
  54.                 wallLayer = new LSprite();
  55.                 wallLayer.x = 300;
  56.                 wallLayer.y = 150;
  57.                 backLayer.addChild(wallLayer);
  58.                 wallLayer.addBodyPolygon(0, 300, 0);
  59.                 backLayer.addEventListener(LMouseEvent.MOUSE_UP, add);
  60.         }
  61.         function add(event) {
  62.                 var x = event.offsetX;
  63.                 var y = event.offsetY;
  64.                 var rand = Math.random();
  65.                 if(rand < 0.33){
  66.                         cLayer = new LSprite();
  67.                         bitmap = new LBitmap(new LBitmapData(imglist["bird1"]));
  68.                         if(x + bitmap.getWidth() >= LGlobal.width){
  69.                                 x = LGlobal.width - bitmap.getWidth();
  70.                         }
  71.                         cLayer.x = x;
  72.                         cLayer.y = y;
  73.                         backLayer.addChild(cLayer);
  74.                         cLayer.addChild(bitmap);
  75.                         cLayer.addBodyCircle(bitmap.getWidth() * 0.5, bitmap.getHeight() * 0.5, bitmap.getWidth() * 0.5, 1, .5, .4, .5);
  76.                         cLayer.setBodyMouseJoint(true);
  77.                 } else if(rand < 0.66){
  78.                         cLayer = new LSprite();
  79.                         backLayer.addChild(cLayer);
  80.                         bitmap = new LBitmap(new LBitmapData(imglist["bird2"]));
  81.                         cLayer.addChild(bitmap);
  82.                         var shapeArray = [
  83.                                 [[0, 54], [27, 0], [54, 54]]
  84.                         ];
  85.                         cLayer.addBodyVertices(shapeArray, 27, 27, 1, .5, .4, .5);
  86.                         cLayer.box2dBody.SetPosition(new LGlobal.box2d.b2Vec2((50 + Math.random() * 700) / LGlobal.box2d.drawScale, 50 / LGlobal.box2d.drawScale));
  87.                         cLayer.setBodyMouseJoint(true);
  88.                 } else{
  89.                         cLayer = new LSprite();
  90.                         bitmap = new LBitmap(new LBitmapData(imglist["stage01"]));
  91.                         if(x + bitmap.getWidth() >= LGlobal.width){
  92.                                 x = LGlobal.width - bitmap.getWidth();
  93.                         }
  94.                         cLayer.x = x;
  95.                         cLayer.y = y;
  96.                         backLayer.addChild(cLayer);
  97.                         cLayer.addChild(bitmap);
  98.                         cLayer.addBodyPolygon(bitmap.getWidth(), bitmap.getHeight(), 1, 5, .4, .2);
  99.                 }
  100.         }
复制代码
代码几乎都是你文章上面的
回复

使用道具 举报

37

主题

8

好友

9313

积分

诸侯王

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

地板
发表于 2015-6-3 10:32:27 |只看该作者
wklc2015 发表于 2015-6-3 09:54
代码几乎都是你文章上面的

多谢了
我看了下,确实有这个问题,这是因为我将touchend事件添到了document上而导致的,之所以这么做,就是为了让手机上体验更好一些,是故意这么做的,但是导致了不全屏的时候的这个问题,
你可以先用mouse_down来替换mouse_up,可以防止这个问题
以后更新的时候我得再好好想一想要不要解决一下
不回答与技术和引擎不相关的问题
回复

使用道具 举报

4

主题

0

好友

36

积分

士兵

Rank: 1

5#
发表于 2015-6-3 10:43:12 |只看该作者
lufy 发表于 2015-6-3 10:32
多谢了
我看了下,确实有这个问题,这是因为我将touchend事件添到了document上而导致的,之所以这么做, ...

多谢老大指点
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

防止垃圾广告,请填写任意字符

Archiver|lufy's legend

GMT+8, 2024-5-9 03:15 , Processed in 0.053155 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部