В JSFL есть обходной путь для записи в BitmapItem.sourceFilePath?

Я хочу написать скрипт, который заменяет источник определенных растровых объектов в моей библиотеке другим файлом. На самом деле, не важно, что объект обновляется на сцене во Flash, и мне все равно, изменится ли состояние BitmapItem.sourceFileIsCurrent. Мне просто нужно изменить sourceFilePath для нашего процесса экспорта (включая CreateJS).

Проблема в том, что BitmapItem.sourceFilePath JSFL доступен только для чтения. Я решил импортировать новое изображение и удалить старое, но старое будет использоваться в различных других символах и на сцене. Итак, что я могу сделать, чтобы решить эту проблему?


person PokeJoe    schedule 30.01.2014    source источник
comment
удачи с предложенными идеями?   -  person George Profenza    schedule 03.02.2014


Ответы (1)


Я не использовал Flash некоторое время, поэтому не уверен на 100%, что это сработает.

Сначала вы можете попробовать это:

  1. Заменить/обновить путь к элементу растрового изображения в библиотеке вручную
  2. Проверьте панель истории и посмотрите, записано ли действие и нет ли красного крестика слева от него. Если это не так, вам повезло, вы используете параметры панели (3 горизонтальные линии), чтобы изменить представление на javascript и увидеть вызов, который вам нужно сделать.

Однако не все, что вы делаете в IDE, можно сделать с помощью JSFL.

Еще одна идея, которую вы можете попробовать:

  1. сохраните имя элемента библиотеки, который вы хотите заменить
  2. импортируйте новое растровое изображение, которое вы хотите использовать (через fl.getDocumentDOM().importFile())
  3. удалите старый элемент растрового изображения, который вы хотели заменить, из библиотеки
  4. установите ранее сохраненное имя для нового элемента растрового изображения (через свойство имени)
  5. (необязательно) обновить экземпляры (instanceUsingOldBitmap.libraryItem = newBitmapItem)
person George Profenza    schedule 30.01.2014
comment
Спасибо за идеи. Некоторые проблемы: панель истории дает некоторый код, но, по-видимому, это не имеет значения. var lib = fl.getDocumentDOM().library; lib.setItemProperty('allowSmoothing', false); lib.setItemProperty('compressionType', 'photo'); Вторая идея терпит неудачу на шаге 3 - если я удалю старый битмап, ссылки на него на сцене или в других символах исчезнут. - person PokeJoe; 03.02.2014
comment
Однако, используя JSFL, выставленный через окно истории (о котором я раньше не знал, спасибо), я обнаружил fl.getDocumentDOM().swapElement();, который может помочь решить эту проблему. - person PokeJoe; 03.02.2014
comment
Забыл про проблему с пропаданием символов. Рад, что всплыло swapElement(), и этот шаг истории можно вызвать из JSFL (как я уже упоминал, не все, что вы делаете в Flash IDE, можно воспроизвести в JSFL). - person George Profenza; 03.02.2014