[AI CC-CC2021] Сохранить и загрузить выделение

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
Последнее редактирование:

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
брасывание выделения через doc.selection = null не обнуляет массив выделения, как я предполагал
Я снова вас не понимаю
1602761999148.png
 

Станислав Хоффман

Участник
Топикстартер
Сообщения
277
Реакции
23
прошу прощения, не ясно выразился. Предполагал, что Null обнулит выделение в переменной, которая хранит массив выделения:

var mSel = doc.selection;

doc.selection = null;

mSel продолжает хранить исходное выделение. По привычке mSel уже принимаю за само выделение.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Предполагал, что Null обнулит выделение в переменной, которая хранит массив выделения:
Разумеется, нет
По этой логике, все переменные, которым чтото присваивалось должны синхронно обнуляться при обнулении этого исходного чтото. ;)
Но я понимаю эту логику - это логика программиста на Cи ;)
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
ну это и есть selection сохранить предварительно 'hz'
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Я уже говорил - это вредная, дурная идея
Очень перспективный путь нарваться на PARM при восстановлении выделения
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Это такой нанотроллинг что ли?
Реально вызвать этот "global persistent conflict" практически невозможно ибо обьявляемые переменные инициализируются при создании. А вот внутри ее замысловатого сырого нутра дело обстоит немного хуже - допустим, ты выбираешь несколько итемов - у тебя есть вполне себе иницмализирлванный массив внутри которого обьекты с вполне инициализированными свойствами, все хорошо. И ты начинаешь по очереди проделывать с ними некие действия, которые меняют общую структуру обьектов - добавляют новые, убирают старые, меняют тип и структуру существующих и т д. И в какой то момент иллюстратор перестает обновлять данные внутри массива selection - обьекты внутри него "повисают в воздухе", их свойства оказываются невалидными и неинициализированными, при обращении к ним и происходит этот самый персистент конфликт. А функция redraw() как раз и приводит всю систему в соответствие (насколько это возможно, разумеется) после каждого деструктивного для обьектной модели действия, типа вызова экшна или пункта меню. Вот примерно так на пальцах и обьясняется данная ошибка а не та бессмысленная безумная пурга, что вы цитируете, переменные тут ни при чем.