除了鼠标外,如让一个DIV感知进入其范围内的对象?

一经注册不得修改 2007-11-14 04:42:43
这个问题很有难度的哦.....能不能模似鼠标的事件?假如仅仅用对象(比如是另一个DIV)随时检查它们各自的位置(矩形)是否有重叠,这样效率又很低....
...全文
129 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
还是没有比较好的思路,因为js学的不是很深,太早抛出这个问题有点冒失...俺先去关注下事件模型然后再回来讨论....
「已注销」 2007-11-15
  • 打赏
  • 举报
回复
不知道这个用得上不

elementFromPoint
版本:DHTML Object Model 返回值:有

语法:
oElement = document . elementFromPoint ( iX , iY )

参数:
iX :  必选项。整数(Integer)。单位:象素(Pixel)。定位横坐标偏移量。
iY :  必选项。整数(Integer)。单位:象素(Pixel)。定位纵坐标偏移量。

返回值:oElement :  对象(Element)。返回获取的对象的引用。

说明:
根据横纵坐标值 iX 和 iY 获取对象 oElement 。 oElement 必须支持和响应鼠标事件。
提供的坐标是客户区坐标。客户区的左上角为 (0,0)。
当将此方法用于 Structured Graphics 或 Sprite 对象时,必须设置 MouseEventsEnabled 属性值为 1 。

应用于:IE4.0+ document


示例:

<script>
function rdl_eventHandle(e){
event.cancelBubble=true;
var oPoint=document.elementFromPoint(event.clientX,event.clientY);
if (oPoint.tagName.toLowerCase()!="li") oCode.innerHTML="请将鼠标移动到项目列表上。";
else oCode.innerHTML="您的鼠标指针现在位于<font color='#FF3300'>"+oPoint.innerText+"</font>上面";
}
document.onmouseover=rdl_eventHandle;
</script>


<ul id=oList style="cursor:default;">
<li>列表项目1
<li>列表项目2
<li>列表项目3
<li>列表项目4
</ul>
<br><div id=oCode>请将鼠标移动到项目列表上。</div>


游北亮 2007-11-15
  • 打赏
  • 举报
回复
星际争霸那个思路也是一样的
每个单位都有一定的势力范围
当A单位进入了B单位的势力范围,就触发了B单位的攻击事件。

实际上应该也是进行了坐标的比对的。

至于楼主的问题,除了比较区域有没有重合,估计没有什么好办法。
感知,这个实际上就是对象的一个动作了,别人触摸它(也就是触发),它的动作开始。

假设A是一个不动的DIV,B是一个会动的DIV,那么B的动肯定是一个事件在支撑着它动,
比如鼠标拖动,或者实现一个方法,通过setInterval让它定时动,或者实现的方法通过键盘让它动,总之肯定是有事件。
那么:
给A定义一个方法
在B的事件里检测有没有重合,如果重合,触发A的方法。
zaodaot 2007-11-15
  • 打赏
  • 举报
回复
楼上的兄弟说的对,星际争霸里的那个确实能给你很大灵感与启发!

-----www.peagame.com.cn
里面的星际争霸或许会给你灵感,因为当单位接近敌方时,敌方会自动攻击.但我不知道怎么查看源码,你可以去无忧论坛上问问幻宇.
「已注销」 2007-11-14
  • 打赏
  • 举报
回复
www.peagame.com.cn
里面的星际争霸或许会给你灵感,因为当单位接近敌方时,敌方会自动攻击.但我不知道怎么查看源码,你可以去无忧论坛上问问幻宇.
  • 打赏
  • 举报
回复
哈哈哈...说DIV的onmouseover只是在打个比方,我当然知道onmouseover是关乎鼠标的事件,问题是要计算它们有无重叠的部分来得知A有无进入B中,这种效率是比较差的,万不得已当然会采用这种方法,但如果有更好的方式能选择,当然要试试啦....
nicholsky 2007-11-14
  • 打赏
  • 举报
回复
还以为你想用手去感知。onmouseover是鼠标经过,不能感知你的DIV经过。如果你的是DIV拖曳对象或者setInterval自动行走才会需要判断的吧。我觉得只能计算位置和对象的宽高去进行判断。
  • 打赏
  • 举报
回复
简而言之我们可以设想这样的场境:水平上有两个DIV,分别是A和B,A向B移动靠近,现在问题是,当A接触到B时,B能否有触发某种事件?当然,通过随时检查它们各自的位置(矩形)是否有重叠这可以实现的,问题是这效率太低,能否能和鼠标一样,能让div的onmouseover 感知到A的进入?
willko 2007-11-14
  • 打赏
  • 举报
回复
除了本身提供的事件,还有就是通过鼠标的位置判断。。。。
tantaiyizu 2007-11-14
  • 打赏
  • 举报
回复


首先要搞明白的是 如何触发事件?

div 随时移动 ,那么是谁让它移动的呢?
  • 打赏
  • 举报
回复
兄弟你没看错,是"感知".....
tantaiyizu 2007-11-14
  • 打赏
  • 举报
回复


div 感知?

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧