AS: если заявление неверно оценивается - PullRequest
0 голосов
/ 28 марта 2012

У меня есть очень простая логика:

var divert:Number = 0;
for (var connection in _connections) {
    trace("target: " + _connections[connection].target + " || i: " + (i + 1));
    if(int(_connections[connection].target) != (i + 1)) {
        trace("bad connection");
        divert++;
    }
}

Проблема в том, что когда i + 1 и int(_connections[connection].target) равны, оператор if возвращает true, как видно извывод моих trace() операторов ниже:

target: 0 || i: 1
bad connection
target: 1 || i: 1
bad connection

Может кто-нибудь увидеть, что может быть причиной этого?

РЕДАКТИРОВАТЬ: Функция, в которой содержится согласно запросу:

public function loadListener(i:Number, onProgress:Function, onComplete:Function):Void
    {
        trace("load listening to: "+i);
        trace("next in queue: " + _queues["lower"][0] + " | " + _queues["upper"][0]);
        _functions[i] = {onProgress:onProgress, onComplete:onComplete};
        if (_queues["lower"][0] != i + 1 || _queues["upper"][0] != i + 1) {
            var divert:Number = 0;
            for (var connection in _connections) {
                trace("target: "+_connections[connection].target+" || i: "+(i+1));
                if(int(_connections[connection].target) != (i + 1)) {
                    trace("bad connection");
                    divert++;
                }
            }
            if (divert == _connections.length) {
                _diversion = i + 1;
                trace("divert: "+divert+" || connections: "+_connections.length);
            }
        }
    }

1 Ответ

1 голос
/ 28 марта 2012

Прежде всего, зачем использовать цикл for(var), когда можно использовать

var divert:Number = 0;
for each(var connection in _connections) {
    trace("target: " + connection.target + " || i: " + (i + 1));
    if(int(connection.target) != (i + 1)) {
        trace("bad connection");
        divert++;
    }
}

Для дальнейшей отладки замените

trace("target: " + connection.target + " || i: " + (i + 1));

на

trace("target: " + int(connection.target) + " || i: " + (i + 1));

Если это отслеживает ноль, вы знаете, где проблема.

Вы можете попробовать сделать

if(connection.target.toString() != (i + 1).toString()) {
...