#javascript #object
#javascript #объект
Вопрос:
Это мой код:
maleBackNoZoom = {
parts:{
armsRight: findItemById("29") ,
armsLeft: findItemById("28"),
legsRight: findItemById("21"),
legsLeft: findItemById("22"),
back: findItemById("24"),
buttocks: findItemById("23"),
neck: findItemById("26"),
head: findItemById("27")
},
illuminate: function() {
for (prop in maleBackNoZoom.parts) {
maleBackNoZoom.parts[prop].opacity = 1;
paper.view.update();
}
}
}
Я перебираю все parts
и пытаюсь установить их opacity=1.
Итак, эти команды:
maleBackNoZoom.parts[prop].opacity = 1;
paper.view.update();
должен вызываться каждые n секунд
Как я могу добавить задержку на каждой итерации?
Примечание: Я, конечно, прочитал весь вопрос о задержке итераций в javascript, но большинство из них имеют отношение к массивам, а не к обходам свойств объекта
Ответ №1:
Вы можете создать список свойств, которые вы хотите осветить. Затем обработайте подсветку точно так же, как вы бы делали для массива.
illuminate: function() {
var propertiesToIlluminate = [], prop, illuminateInternal, i = 0, delay = 1000, intervalId;
for (prop in maleBackNoZoom.parts) {
propertiesToIlluminate.push(prop);
}
illuminateInternal = function () {
var property = propertiesToIlluminate[i];
maleBackNoZoom.parts[property].opacity = 1;
paper.view.update();
i ;
if (i === propertiesToIlluminate.length) {
clearInterval(intervalId);
}
};
intervalId = setInterval(illuminateInternal, delay);
}
Комментарии:
1. возможно ли иметь функцию illuminateInternal как часть объекта maleBackNoZoom, чтобы я мог повторно использовать объект с другим именем и разными частями?