Изменение цвета текста в определенном фрейме

  • Автор темы Автор темы [desp]
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

[desp]

Топикстартер
15 лет на форуме
Сообщения
33
Реакции
0
Добрый день.
Подскажите, как изменить цвет текста в определенном фрейме - допустим, идет разбивка на несколько страниц, но текст должен быть на первой черный, на второй - красный. Текст со свободным перетеканием из одного фрейма в другой.
Через стиль объектов - внутренняя тень - типография пошлет, так как цвет вылезет.
 
Ответ: Изменение цвета текста в определенном фрейме

идет разбивка на несколько страниц, но текст должен быть на первой черный, на второй - красный.
Для такого случая:
Код:
if(app.selection[0].constructor.name != "TextFrame"){alert("Выделите текстовый фрейм");exit();}
var myTF = app.activeDocument.selection[0].parentStory.texts[0].parentTextFrames;
for (i=0;i<myTF.length;i++){
	if (myTF[i].parent.side == PageSideOptions.LEFT_HAND){
		myTF[i].texts[0].fillColor = "Black";
		}
	else {myTF[i].texts[0].fillColor = "Red";}
	}
 
Ответ: Изменение цвета текста в определенном фрейме

Eugenyus, код выдает ошибку: Object does not support the property or metod 'side'
Line: 5.
Source: if (myTF.parent.side == PageSideOptions.LEFT_HAND){
Если я правильно понимаю side можно применить только к page. А alert (myTF[0]) выдает [object Spread]. Почему родитель TextFrames – Spread? Где Story и Page?

InDesign CS5 (7.0.3)
 
Ответ: Изменение цвета текста в определенном фрейме

Подумал было проверить настройки линеек (Rule per Page/Spread), положение фрейма, объектную модель CS5... А потом перечитал название темы. И раз уже надо менять цвет в определенном фрейме, то к нему и привяжемся, и больше ни к чему:
Код:
if(app.selection[0].constructor.name != "TextFrame"){alert("Выделите текстовый фрейм");exit();}
var myTF = app.activeDocument.selection[0].parentStory.texts[0].parentTextFrames;
for (i=0;i<myTF.length;i=i+2){
		myTF[i].texts[0].fillColor = "Black";
		myTF[i+1].texts[0].fillColor = "Red";
		}
 
Ответ: Изменение цвета текста в определенном фрейме

Вопрос про родителя TextFrames остается открытым. Почему Spread? Так же как и у Rectangle, Oval etc. Даже при отключеном Facing Pages родитель Spread. Куда делась Page?
Или это у меня руки не оттуда растут?
Кстать в документе Ruler per Page.
 
Ответ: Изменение цвета текста в определенном фрейме

TextFrame.parent (Read Only)
Data Type: varies
Adobe InDesign CS5 (5.0) Object Model
The parent of the TextFrame (a Spread, MasterSpread, PageItem, Oval, Rectangle, Polygon, GraphicLine, Group, State, Document, Layer, Button, TextFrame, Story, Text, Word, Line, TextColumn, Paragraph, TextStyleRange, Cell, Table, InsertionPoint, Page, Character or Footnote).

TextFrame.parent (Read Only)
Data Type: varies
Adobe InDesign CS5 (7.0) Object Model
The parent of the TextFrame (a Snippet, Spread, MasterSpread, SplineItem, Polygon, GraphicLine, Rectangle, Oval, Group, State, Character or PlaceGun).

Вот так. :) Для того чтобы бегать, уши не нужны, решили, видимо, они, и выкинули Page. И впридачу половину объектов.
 
Ответ: Изменение цвета текста в определенном фрейме

Вот так. :) Для того чтобы бегать, уши не нужны, решили, видимо, они, и выкинули Page. И впридачу половину объектов.
Тогда как достучаться до номера страницы, на которой расположен тот или иной объект? Видимо в данном случае, уши нужны, хотя бы для равновесия. :)
 
Ответ: Изменение цвета текста в определенном фрейме

Через spread.pages
 
Ответ: Изменение цвета текста в определенном фрейме

Тогда другой вопрос, почему alert (myTF[0].parent.pages[0].side) правильно возврашает RIGHT_HAND, а if (myTF.parent.pages[1].side == PageSideOptions.LEFT_HAND){ говорит Object is invalid?
 
Ответ: Изменение цвета текста в определенном фрейме

Потому что не myTF, а myTF[1]?
 
Ответ: Изменение цвета текста в определенном фрейме


Не по теме:
Тег Italic убрал у myTF

Вот так:
Код:
if (myTF[i].parent.pages[i].side == PageSideOptions.LEFT_HAND){
Результат: Object is invalid
 
Ответ: Изменение цвета текста в определенном фрейме

Когда i будет равно от 2 до, скажем, 50, что будет с pages?
Parent, т.е. разворот, сколько страниц содержит?
 
Ответ: Изменение цвета текста в определенном фрейме

Когда i будет равно от 2 до, скажем, 50, что будет с pages

Да, ступил малость, pages по старому привязывал не к развороту, а к документу, т.е. к количеству страниц.
 
Ответ: Изменение цвета текста в определенном фрейме

Жек, засунь ты его в папку Version 5.0 и не мучай себе мозг. И будет тебе родитель фрейма - страница.
 
Ответ: Изменение цвета текста в определенном фрейме


Не по теме:
Жек, засунь ты его в папку Version 5.0 и не мучай себе мозг. И будет тебе родитель фрейма - страница.
Так я ж ночами спать не буду пока не докопаюсь до истины.


Все ж как получить номер страницы? Раньше, кажется, через name. Сейчас app.selection[0].parent.pages.name не работает. Работает app.selection[0].parent.pages[0].name, но такой вариан не устраивает. Есть другие варианты?
 
Ответ: Изменение цвета текста в определенном фрейме

В CS5:
if( app.selection[0].parentPage )
alert( app.selection[0].parentPage.name )
 
Ответ: Изменение цвета текста в определенном фрейме

В CS5:
if( app.selection[0].parentPage )
alert( app.selection[0].parentPage.name )

Ага, сам уже методом тыка нашел. Мозг вынес. Но все равно спасибо.

Вот так работает:
Код:
if(app.selection[0].constructor.name != "TextFrame"){alert("Выделите текстовый фрейм");exit();}
var myTF = app.activeDocument.selection[0].parentStory.texts[0].parentTextFrames;
for (i=0;i<myTF.length;i++){
	if (myTF[i].parentPage.side == PageSideOptions.LEFT_HAND){
		myTF[i].texts[0].fillColor = "Black";
		}
	else {myTF[i].texts[0].fillColor = "Red";}
	}
 
Статус
Закрыто для дальнейших ответов.