Не удаётся получить ссылку на следующую страницу

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

hulk1776

Топикстартер
15 лет на форуме
Сообщения
738
Реакции
21
Как получить ссылку на след. страницу [Indi CS6]?
var mDoc = app.activeDocument;
var mPage = app.selection[0].parentPage;
mPagenum = mPage.name;
var nextPage= mDoc.page[Number(mPagenum)+1]; --выдается не след. а через страницу, т.е. +2.
В чем может быть дело?

Спасибо.
 
Ответ: Если есть вопросы по скриптам

В том, что в стандартной ситуации имя первой страницы — "1", а индекс = 0.
Код:
alert("Name: " + app.activeDocument.pages[0].name+"\n"+"Index: " + app.activeDocument.pages[0].index);
 
Ответ: Если есть вопросы по скриптам

В том, что в стандартной ситуации имя первой страницы — "1", а индекс = 0.
Код:
alert("Name: " + app.activeDocument.pages[0].name+"\n"+"Index: " + app.activeDocument.pages[0].index);

крути-крутил, все равно номер увеличивается на 2. Не могу увязать с индексом. ))
 
Ответ: Если есть вопросы по скриптам

Так не срабатывает?
Код:
var nextPage= mDoc.pages.nextItem(mPage);
Если выделенный объект на четной странице, то все отлично. А если не нечетной (правой), то NextPage становится объектом с отсутствующими ствойствами (судя по окошку DataBrowser). Соответственно попытки считать индекс или название страницы (.name) выдают ошибку.
 
Ответ: Если есть вопросы по скриптам

Иерархия объектов в ИД:
Код:
Application
    Document
        Spread
            Page

Соответственно, свойство index это порядковый номер страницы на развороте, а вы пытаетесь определить порядковый номер страницы во всем документе.

Попробуйте так:
Код:
// ф-я поиска индекса страницы относительно документа
Page.prototype.getIndexAtDocument = function() {
    
    // массив всех страниц документа
    var pages = this.parent.parent.pages;
    
    for (var i = pages.length; i--;) {
        
        if (this === pages[i]) return i;
    }
    
    throw 'Error. Can not find index of page.';
}

// пример использования

d = app.selection[0].parentPage;

i = d.getIndexAtDocument();

alert('Current page: ' + app.activeDocument.pages[i].name + 
    '\nNext page: ' + app.activeDocument.pages[i + 1].name);
 
Ответ: Если есть вопросы по скриптам

а это
Код:
for (var i = pages.length; i--;)


ТС: у Page есть замечательное свойство documentOffset
 
Ответ: Если есть вопросы по скриптам

Это что за конструкция?

Не разделяю вашей иронии - она прекрасна. Ну как минимиум она работает в отличие от

Код:
[COLOR=#333333]var nextPage= mDoc.pages.nextItem(mPage);[/COLOR]

Page есть замечательное свойство documentOffset

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