2

我进行了以下检查,以查看是否应将元素视为“悬停”。

我很困惑,因为我看到元素设置state === 'hover'在不应该设置的位置。

alert消息更加令人困惑,因为它表明刚刚评估为 true 的表达式是不应该的(如果您从逻辑上考虑的话)。

if( (ig.gui.cursor.pos.x >= element.pos.x) 
    && (ig.gui.cursor.pos.x <= element.pos.x + element.size.x)
    && (ig.gui.cursor.pos.y >= element.pos.y) 
    && (ig.gui.cursor.pos.y <= element.pos.y + element.size.y) 
    && !element.disabled ) {

    state = 'hover';

    alert(

        'This statement evaluates to true: '

        + ig.gui.cursor.pos.x
        + '>='
        + element.pos.x
        + '&&'
        + ig.gui.cursor.pos.x
        + '<='
        + element.pos.x
        + '+'
        + element.size.x
        + '&&'

        + ig.gui.cursor.pos.y
        + '>='
        + element.pos.y
        + '&&'
        + ig.gui.cursor.pos.y
        + '<='
        + element.pos.y
        + '+'
        + element.size.y
        + '&&'

        + ( !element.disabled )

    );

}

上面的代码会产生alert这样的消息:

警报信息

当然,我们都同意580 <= 60 + 48评估为FALSE,对吧?

然而警报仍然被调用......

4

1 回答 1

6

element.pos.x是一个字符串(“60”)。您需要将它(以及比较中的所有其他字符串)转换回一个数字。

于 2012-12-20T02:31:28.127 回答