Egret社区
我通过for循环添加sprite及其注册事件,发现监听事件是无法触发的?但若改为添加的类型是Bitmap就可以。
  1. for (var f:number = 0; f < 4; f++) {
  2.             var x:number = 25 + (100 + 10) * Math.floor(f / 2);
  3.             var y:number = 215 + (f % 2) * (100 + 10);

  4.             var spr:egret.Sprite = new egret.Sprite();

  5.             spr.graphics.beginFill(0xFF0000);
  6.             spr.graphics.drawRect(x, y, 100, 100);
  7.             spr.graphics.endFill();
  8.             spr.width = 100;
  9.             spr.height = 100;
  10.             spr.touchEnabled = true;
  11.             this.addChild(spr);      spr.addEventListener(egret.TouchEvent.TOUCH_TAP, this.onTouch, this);
  12. }
复制代码

求解?如果要添加一系列sprite,正确的注册事件怎样?
分享到 :
0 人收藏

4 个回复

倒序浏览
张宇  官方团队 | 2014-8-18 11:36:00
spr.graphics.drawRect(x, y, 100, 100);
这个有问题,应该是
spr.graphics.drawRect(0, 0, 100, 100);
spr.x = x;
spr.y=y;
lovecode2014  登堂入室 | 2014-8-18 11:41:40
张宇 发表于 2014-8-18 11:36
spr.graphics.drawRect(x, y, 100, 100);
这个有问题,应该是
spr.graphics.drawRect(0, 0, 100, 100);

生成Sprite是正常的,只是事件不能触发。
wibrst  登堂入室 | 2014-8-18 11:42:47
通常的写法是 0,0 起始哦,不过也是一个潜规则 mark!
dom  圆转纯熟 | 2014-8-18 12:19:35
lovecode2014 发表于 2014-8-18 11:41
生成Sprite是正常的,只是事件不能触发。

这个是因为矢量绘制的图还没有实现自动测量。这个性能损耗比较大。后期研究出高性能的方案在加上去。你现在可以这么理解:矢量绘制出来的东西就是不存在的。鼠标事件的触发区域只跟你设置的sprite宽高有关。从sprite的0,0,点到你设置的宽高,这个区域是鼠标响应区域。而你这里没有从0,0点开始画。所以你点在你画的那个区域,没点到Sprite的鼠标响应区域。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号 )

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部