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

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

[desp]

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

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: Изменение цвета текста в определенном фрейме

идет разбивка на несколько страниц, но текст должен быть на первой черный, на второй - красный.
Для такого случая:
Код:
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";}
	}
 

_JVK_

Чатланин
10 лет на форуме
Сообщения
184
Реакции
175
Ответ: Изменение цвета текста в определенном фрейме

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)
 

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: Изменение цвета текста в определенном фрейме

Подумал было проверить настройки линеек (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";
		}
 

_JVK_

Чатланин
10 лет на форуме
Сообщения
184
Реакции
175
Ответ: Изменение цвета текста в определенном фрейме

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

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: Изменение цвета текста в определенном фрейме

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. И впридачу половину объектов.
 

_JVK_

Чатланин
10 лет на форуме
Сообщения
184
Реакции
175
Ответ: Изменение цвета текста в определенном фрейме

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

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: Изменение цвета текста в определенном фрейме

Через spread.pages
 

_JVK_

Чатланин
10 лет на форуме
Сообщения
184
Реакции
175
Ответ: Изменение цвета текста в определенном фрейме

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

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: Изменение цвета текста в определенном фрейме

Потому что не myTF, а myTF[1]?
 

_JVK_

Чатланин
10 лет на форуме
Сообщения
184
Реакции
175
Ответ: Изменение цвета текста в определенном фрейме


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

Вот так:
Код:
if (myTF[i].parent.pages[i].side == PageSideOptions.LEFT_HAND){
Результат: Object is invalid
 

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: Изменение цвета текста в определенном фрейме

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

_JVK_

Чатланин
10 лет на форуме
Сообщения
184
Реакции
175
Ответ: Изменение цвета текста в определенном фрейме

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

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

Eugenyus

12 лет на форуме
Сообщения
1 960
Реакции
3 589
Ответ: Изменение цвета текста в определенном фрейме

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

_JVK_

Чатланин
10 лет на форуме
Сообщения
184
Реакции
175
Ответ: Изменение цвета текста в определенном фрейме


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


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

LeshikSan

15 лет на форуме
Сообщения
266
Реакции
185
Ответ: Изменение цвета текста в определенном фрейме

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

_JVK_

Чатланин
10 лет на форуме
Сообщения
184
Реакции
175
Ответ: Изменение цвета текста в определенном фрейме

В 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";}
	}
 
Статус
Закрыто для дальнейших ответов.