Быстрая установка имен экземпляров для ключевых кадров в AS3

Прямо сейчас во Flash CS3 и выше (с использованием ActionScript 3), если у вас есть тот же экземпляр, который используется в нескольких ключевых кадрах на слое, и вы решите назначить или изменить имя экземпляра позже, вам придется перейти к каждому ключевому кадру и установить имя экземпляра. Это большая неприятность. Есть ли способ сделать это быстрее или лучше?

ПРИМЕЧАНИЕ. В AS2 вы можете установить имя, используя свойство name MovieClip в вашем коде в обработчике onLoad класса MovieClip, чтобы это было сделано раз и навсегда. К сожалению, в AS3 вам больше не разрешено устанавливать свойство name.


person Boon    schedule 03.01.2009    source источник


Ответы (6)


Вы можете использовать JSFL, язык автоматизации на основе javascript во Flash, для автоматизации подобных задач.

  • Щелкните Файл> Создать.
  • Выберите "Flash JavaScript File" из списка.
  • Вставьте следующий скрипт
  • Убедитесь, что в вашем FLA-файле выбраны ваши экземпляры.
  • Нажмите кнопку «Выполнить» («Воспроизвести») в файле сценария JSFL.

Затем вы можете использовать следующий код, чтобы назвать все выбранные экземпляры префиксом и порядковым номером:

var prefix:String = "myInstance_";
for(i in fl.getDocumentDOM().selection)
{
    fl.getDocumentDOM().selection[i].name = prefix + i.toString();
}

Это приведет к тому, что ваши экземпляры будут называться myInstance_1, myInstance_2 и т. Д. Это в основном пример, который вы можете расширить в соответствии с вашими конкретными потребностями.

(Следует отметить, что fl.trace () выводит сообщения трассировки в JSFL при отладке, мне потребовалось время, чтобы понять это)

person Soviut    schedule 04.01.2009
comment
Да, это то, на что вы должны смотреть. Не забывайте, что вы можете перейти в режим редактирования нескольких кадров, чтобы выбрать один и тот же MC в нескольких ключевых кадрах. - person fenomas; 04.01.2009
comment
Мой пример должен был стать быстрым одноразовым решением и учебником для будущей разработки JSFL на тот случай, если необходимость в переименовании потребуется чаще. - person Soviut; 05.01.2009
comment
Как бы вы заставили свой скрипт прочесать все на слое и задать имя для всех экземпляров ключевых кадров? поскольку в стандартной практике у нас обычно есть только один экземпляр мувиклипа на слой. - person Boon; 06.01.2009
comment
Отправьте это как отдельный вопрос, и я могу на него ответить. По сути, вы должны использовать Layers = fl.getDocumentDOM (). GetTimeline (). Layers, затем вы можете выполнять итерацию по слоям как массив (Layers [0], Layers [1] и т. Д.) И получать Layers.frames и повторять и те, что и массив. - person Soviut; 07.01.2009
comment
Здорово! Я не был уверен, сможет ли JSFL на такое. - person Robin Rodricks; 11.01.2009
comment
Думайте о JSFL как о сценарии действий для самого Flash-приложения. - person Soviut; 11.01.2009
comment
Мне пришлось удалить: String из определения var, иначе у меня пропала ошибка; перед оператором в строке 1 - person simo; 21.05.2014

Полуавтоматический способ поиска и замены имен экземпляров:

  1. Главное меню Flash> Правка> Найти и заменить (CTRL + F)
  2. Искать в "Текущем документе"
  3. Для "Символ"
  4. Имя [символ вашего экземпляра]
  5. Убедитесь, что флажок Оперативное редактирование не установлен.
  6. Запишите где-нибудь название своего нового экземпляра, а затем скопируйте его в буфер обмена.

Повторите следующие действия для каждого экземпляра:

  1. Нажмите Найти далее на панели поиска и замены.
  2. Дважды щелкните текстовое поле Имя экземпляра на панели «Свойства», чтобы выбрать «Все».
  3. Вставьте новое имя экземпляра, перезаписав исходное.
  4. Нажмите ENTER, чтобы подтвердить изменение.

Развлекайся! Это лучший способ использовать инструменты Flash IDE.

person Robin Rodricks    schedule 04.01.2009

Назовите свои экземпляры перед копированием их в несколько ключевых кадров! (перед нажатием F6 - Вставить новый ключевой кадр) Это всегда лучшее решение.

person Robin Rodricks    schedule 04.01.2009
comment
Я согласен, что сначала наименование - это лучший подход, мой вопрос в основном касается тех случаев, когда вам нужно что-то изменить или когда вы забыли назвать что-то, на что позже захотите сослаться в коде. - person Boon; 06.01.2009

если все кадры экземпляра являются серийными, вы просто сначала назначаете имя. else «поиск и замена имен экземпляров» может быть лучшим решением.

person Community    schedule 04.01.2009

лучший способ поменять многократно фрейм (но не самый аферист)

  1. выделите весь кадр на временной шкале
  2. нажмите кнопку "Редактировать кадр умножения"
    эта кнопка находится чуть ниже временной шкалы возле кожуры лука

  3. изменить имя экземпляра

это изменит имя вашего экземпляра для всего фрейма

person Community    schedule 10.02.2009

Это расширение устанавливает имя экземпляра для нескольких ключевых кадров: http://ajarproductions.com/blog/2010/03/30/set-instance-name-on-multiple-frames/

person Justin Putney    schedule 31.03.2010