lufy's legend

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
楼主: matthew
打印 上一主题 下一主题

扇形点击范围

[复制链接]

7

主题

0

好友

189

积分

士兵

Rank: 1

楼主
发表于 2018-3-19 16:32:30 |显示全部楼层
lufy 发表于 2016-5-23 08:44
啊,是点击范围啊,怪我没看清楚问题了
这个确实不太友好,下次更新我会稍微调整一下的 ...

一个圆中有很多扇形,我想要给每个扇形添加mouseover和mouseout事件,扇形是循环画出来的,我在循环里给每个扇形绑定事件似乎不行,有什么办法吗?
回复

使用道具 举报

7

主题

0

好友

189

积分

士兵

Rank: 1

沙发
发表于 2018-3-20 10:11:05 |显示全部楼层
lufy 发表于 2018-3-19 20:07
现在的扇形点击范围有点问题,现在就是整个圆的点击范围
所以,没办法简单的完成你想要的效果,只能自己 ...

大神帮我看一下这段代码,我想要给画出来的扇形循环添加mouseover 和 mouseout事件,获取每个nArrow的setColor,这样循环绑定事件获取到的一直是最后一个setColor,是什么原因呢?
var rainbow = new LSprite();
    element.addChild(rainbow);
    if(info.rainbowArray.length > 0){
      for(var i = 0; i < info.rainbowArray.length; i++) {
        var nArrow = new LSprite();
        rainbow.addChild(nArrow);
        nArrow.setColor = info.rainbowArray;
        var l = info.rainbowArray.length;
        var averageAngle = 180 / l;
        var sAngle = i * averageAngle / 180 - 1/2;
        var eAngle = (i+1) / l - 1/2;
        if(i == 0) {
          sAngle = -1;
        }
        if(i == info.rainbowArray.length - 1) {
          eAngle = 1;
        }
        nArrow.graphics.drawArc(0, '#fff', [100, 50, 36, sAngle*Math.PI, eAngle*Math.PI, false, true], true, info.rainbowArray);
        rainbow.visible = false;
        nArrow.addEventListener(LMouseEvent.MOUSE_OVER, wf.mouseRainBowOver);
        nArrow.addEventListener(LMouseEvent.MOUSE_OUT, wf.mouseRainBowOut);
      }
    }

回复

使用道具 举报

7

主题

0

好友

189

积分

士兵

Rank: 1

板凳
发表于 2018-3-21 10:14:20 |显示全部楼层
lufy 发表于 2018-3-20 20:54
nArrow.setColor = info.rainbowArray;
这不是所有的都一样了吗

不是的,可能是复制少了   nArrow.setColor = info.rainbowArray【i】;
中括号不显示
回复

使用道具 举报

7

主题

0

好友

189

积分

士兵

Rank: 1

地板
发表于 2018-3-21 17:16:54 |显示全部楼层
lufy 发表于 2018-3-21 17:01
setColor在哪用的,你代码里也没有体现,原因没法找啊

就是在wf.mouseRainBowOver事件中获取当前悬浮的扇形的setColor
回复

使用道具 举报

7

主题

0

好友

189

积分

士兵

Rank: 1

5#
发表于 2018-3-22 10:05:32 |显示全部楼层
lufy 发表于 2018-3-22 06:31
所以要确定你代码写的是不是正确
你代码不给全,我怎么判断你哪里出了问题呢 ...

wf.mouseRainBowOver = function(e, obj) {}   这里的obj获取的是最后一个扇形,不是当前悬浮的扇形
回复

使用道具 举报

7

主题

0

好友

189

积分

士兵

Rank: 1

6#
发表于 2018-3-23 10:31:46 |显示全部楼层
lufy 发表于 2018-3-22 14:18
我最开始已经回答过了,你需要自己写算法来获取鼠标所在的区域
下面是个简单的demo,可能跟你的不完全一 ...

好的  谢谢大神
回复

使用道具 举报

7

主题

0

好友

189

积分

士兵

Rank: 1

7#
发表于 2018-3-28 18:46:02 |显示全部楼层
lufy 发表于 2018-3-22 14:18
我最开始已经回答过了,你需要自己写算法来获取鼠标所在的区域
下面是个简单的demo,可能跟你的不完全一 ...

lufy,最初我是想给每块扇形添加事件,因为需要在每个扇形切换的时候触发事件,而不是移出整个扇形,循环给每个扇形添加事件后获取的setColor就会总是最后一个,有什么解决办法吗?
回复

使用道具 举报

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

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

Archiver|lufy's legend

GMT+8, 2024-5-4 06:30 , Processed in 0.050419 second(s), 20 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部