除了鼠标外,如让一个DIV感知进入其范围内的对象? 首先要搞明白的是 如何触发事件?div 随时移动 ,那么是谁让它移动的呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 简而言之我们可以设想这样的场境:水平上有两个DIV,分别是A和B,A向B移动靠近,现在问题是,当A接触到B时,B能否有触发某种事件?当然,通过随时检查它们各自的位置(矩形)是否有重叠这可以实现的,问题是这效率太低,能否能和鼠标一样,能让div的onmouseover 感知到A的进入? 还以为你想用手去感知。onmouseover是鼠标经过,不能感知你的DIV经过。如果你的是DIV拖曳对象或者setInterval自动行走才会需要判断的吧。我觉得只能计算位置和对象的宽高去进行判断。 哈哈哈...说DIV的onmouseover只是在打个比方,我当然知道onmouseover是关乎鼠标的事件,问题是要计算它们有无重叠的部分来得知A有无进入B中,这种效率是比较差的,万不得已当然会采用这种方法,但如果有更好的方式能选择,当然要试试啦.... www.peagame.com.cn里面的星际争霸或许会给你灵感,因为当单位接近敌方时,敌方会自动攻击.但我不知道怎么查看源码,你可以去无忧论坛上问问幻宇. 楼上的兄弟说的对,星际争霸里的那个确实能给你很大灵感与启发!-----www.peagame.com.cn 里面的星际争霸或许会给你灵感,因为当单位接近敌方时,敌方会自动攻击.但我不知道怎么查看源码,你可以去无忧论坛上问问幻宇. 星际争霸那个思路也是一样的每个单位都有一定的势力范围当A单位进入了B单位的势力范围,就触发了B单位的攻击事件。实际上应该也是进行了坐标的比对的。至于楼主的问题,除了比较区域有没有重合,估计没有什么好办法。感知,这个实际上就是对象的一个动作了,别人触摸它(也就是触发),它的动作开始。假设A是一个不动的DIV,B是一个会动的DIV,那么B的动肯定是一个事件在支撑着它动,比如鼠标拖动,或者实现一个方法,通过setInterval让它定时动,或者实现的方法通过键盘让它动,总之肯定是有事件。那么:给A定义一个方法在B的事件里检测有没有重合,如果重合,触发A的方法。 不知道这个用得上不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> 大侠们,求助。。 关于js替换选中文字!!要兼容...求高手帮忙啊~~ 关于如何复制数组 showModalDialog问题,送分活动~~~ 修改iFrame.src的奇怪问题 前台如何屏蔽用户的请求? javascript中的cloneNode克隆事件为什么克隆不了事件呢? 能去掉字符串前后的空格吗? 哪位能帮帮我把这个js代码在页面载入时自动选择2004年和当前月份? 急!在NetScape中动态变更select框中的选项 子页面回传值问题 关于insertCell的问题,请高手帮我解决下。谢谢
里面的星际争霸或许会给你灵感,因为当单位接近敌方时,敌方会自动攻击.但我不知道怎么查看源码,你可以去无忧论坛上问问幻宇.
里面的星际争霸或许会给你灵感,因为当单位接近敌方时,敌方会自动攻击.但我不知道怎么查看源码,你可以去无忧论坛上问问幻宇.
每个单位都有一定的势力范围
当A单位进入了B单位的势力范围,就触发了B单位的攻击事件。实际上应该也是进行了坐标的比对的。至于楼主的问题,除了比较区域有没有重合,估计没有什么好办法。
感知,这个实际上就是对象的一个动作了,别人触摸它(也就是触发),它的动作开始。假设A是一个不动的DIV,B是一个会动的DIV,那么B的动肯定是一个事件在支撑着它动,
比如鼠标拖动,或者实现一个方法,通过setInterval让它定时动,或者实现的方法通过键盘让它动,总之肯定是有事件。
那么:
给A定义一个方法
在B的事件里检测有没有重合,如果重合,触发A的方法。
版本: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>