首先要搞明白的是 如何触发事件?div 随时移动 ,那么是谁让它移动的呢?

解决方案 »

  1.   

    简而言之我们可以设想这样的场境:水平上有两个DIV,分别是A和B,A向B移动靠近,现在问题是,当A接触到B时,B能否有触发某种事件?当然,通过随时检查它们各自的位置(矩形)是否有重叠这可以实现的,问题是这效率太低,能否能和鼠标一样,能让div的onmouseover 感知到A的进入?
      

  2.   

    还以为你想用手去感知。onmouseover是鼠标经过,不能感知你的DIV经过。如果你的是DIV拖曳对象或者setInterval自动行走才会需要判断的吧。我觉得只能计算位置和对象的宽高去进行判断。
      

  3.   

    哈哈哈...说DIV的onmouseover只是在打个比方,我当然知道onmouseover是关乎鼠标的事件,问题是要计算它们有无重叠的部分来得知A有无进入B中,这种效率是比较差的,万不得已当然会采用这种方法,但如果有更好的方式能选择,当然要试试啦....
      

  4.   

    www.peagame.com.cn
    里面的星际争霸或许会给你灵感,因为当单位接近敌方时,敌方会自动攻击.但我不知道怎么查看源码,你可以去无忧论坛上问问幻宇.
      

  5.   

    楼上的兄弟说的对,星际争霸里的那个确实能给你很大灵感与启发!-----www.peagame.com.cn 
    里面的星际争霸或许会给你灵感,因为当单位接近敌方时,敌方会自动攻击.但我不知道怎么查看源码,你可以去无忧论坛上问问幻宇.
      

  6.   

    星际争霸那个思路也是一样的
    每个单位都有一定的势力范围
    当A单位进入了B单位的势力范围,就触发了B单位的攻击事件。实际上应该也是进行了坐标的比对的。至于楼主的问题,除了比较区域有没有重合,估计没有什么好办法。
    感知,这个实际上就是对象的一个动作了,别人触摸它(也就是触发),它的动作开始。假设A是一个不动的DIV,B是一个会动的DIV,那么B的动肯定是一个事件在支撑着它动,
    比如鼠标拖动,或者实现一个方法,通过setInterval让它定时动,或者实现的方法通过键盘让它动,总之肯定是有事件。
    那么:
    给A定义一个方法
    在B的事件里检测有没有重合,如果重合,触发A的方法。
      

  7.   

    不知道这个用得上不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>