Числовые значения цвета в javascript

Статус
Закрыто для дальнейших ответов.

huck

безучастник
Топикстартер
15 лет на форуме
Сообщения
703
Реакции
59

Не по теме:
Программист из меня тот еще

Создаю объект с обводкой 0/0/0/99
Пишу скрипт
Код:
for (i = 0; i < app.activeDocument.pathItems.length; i++) {
  var myBlack = app.activeDocument.pathItems[i].strokeColor.black;
  if ( myBlack = 99 ) {
  app.activeDocument.pathItems[i].selected = true;
  }
}
Не работает. Чуть мозг не вывихнул, пока не проверил, как скрипт определяет цвет обводки. Оказалось: 99.0000009536743

Math функции trunc и round работать не захотели.
Как быть? Использовать конструкции типа if ( myBlack > 99 && myBlack < 100) как-то коряво (или нет?)
 

apg_777

15 лет на форуме
Сообщения
278
Реакции
81
Лучше создать свой swatch и общаться с ним по имени.
А в данном примере можно схватить любой, в котором черный попадет в указанные условия.
 
  • Спасибо
Реакции: huck

dumbm1

10 лет на форуме
Сообщения
421
Реакции
196
вот так работает:
if ( myBlack == 99 )
 
Последнее редактирование:

huck

безучастник
Топикстартер
15 лет на форуме
Сообщения
703
Реакции
59
@dumbm1, у меня не работает, пробовал (и раньше и сейчас еще раз) :\
 

huck

безучастник
Топикстартер
15 лет на форуме
Сообщения
703
Реакции
59
@apg_777, это для чужих работ эксперимент. Приносят, например с несколько десятков однотипных макетов, и во всех трим-бокс нарисован.
 

dumbm1

10 лет на форуме
Сообщения
421
Реакции
196
@huck, а так?
if (myBlack < 99.1 && myBlack > 98.9)
первый вариант нормально срабатывает в Illustrator CC-2014, т.к. там myBlack == 99 ровно! ))
для cs5 надо подправить:
var myBlack = Math.round(app.activeDocument.pathItems.strokeColor.black);
 
Последнее редактирование:

huck

безучастник
Топикстартер
15 лет на форуме
Сообщения
703
Реакции
59
@dumbm1, я в первом посте об этом же спросил, правда поширше :) Прояснить бы куда и насколько гуляют значения.
p.s. у меня CMYK
 

dumbm1

10 лет на форуме
Сообщения
421
Реакции
196
или округлить:
var myBlack = Math.round(app.activeDocument.pathItems.strokeColor.black);
или оставить только целую часть:
var myBlack = (app.activeDocument.pathItems.strokeColor.black).toFixed(0);
или указать диапазон:
if (myBlack < 99.1 && myBlack > 98.9) // нормально это, не коряво ;)
в CS5 срабатывает любой из вариантов
 
Последнее редактирование:
  • Спасибо
Реакции: huck
Статус
Закрыто для дальнейших ответов.