Показать сообщение отдельно
  #5 (permalink)  
Старый 19.10.2013, 22:07
Интересующийся
Отправить личное сообщение для eko24 Посмотреть профиль Найти все сообщения от eko24
 
Регистрация: 04.11.2012
Сообщений: 24

Здесь итет отображение каждого светофора:
for (var a = 0, f; a < traffic_lights.length; a++) {
        var g = traffic_lights[a];
        f = $("#c" + a);
        (function (a, d) {
            var b = 0,
                time = 0;
            return function s() {
                time || (a.css({"background-color": d[b].color}), time = d[b].time, b = ++b % d.length);
                a.html(time);
                time--;
                window.setTimeout(s, 1e3);
            }
        })(f, g)();
    }

Еще у меня есть массив с координатами для каждого светофора:
traffic_locations = [[x1:10,y1:10,x2:20,y2:20],[x1:110,y1:110,x2:120,y2:120]];

Каждый раз как будет изменяться цвет в span будет прорисовываться этот светофор на канвасе.
Я себе вижу это как то так:
traffic_locations = [[x1:10,y1:10,x2:20,y2:20],[x1:110,y1:110,x2:120,y2:120]];
for (var a = 0, f; a < traffic_lights.length; a++) {
        var g = traffic_lights[a];
        var tl = traffic_locations[a];//получаем расположение на канвасе светофора, который сейчас обрабатываеться
        f = $("#c" + a);
        (function (a, d) {
            var b = 0,
                time = 0;
            return function s() {
                time || (a.css({"background-color": d[b].color}), time = d[b].time, b = ++b % d.length);
                a.html(time);
                time--;
                canvas.fillRect(tl.x1,tl.y1,tl.x2,tl.y2,d[b].color);//отрисовываем этот светофор на канвасе
                window.setTimeout(s, 1e3);
            }
        })(f, g)();
    }
Ответить с цитированием