Поле TLFText не работает после обновления с CS5 до CS5.5

Для своего проекта я использую следующее:

  • FlashDevelop 3.3.4 RTM
  • Flash Pro CS 5 (только библиотеки, без кода)

Некоторое время назад мы начали использовать TLFTextfields. Мне пришлось включить файл tlfruntime.swc из папки Adobe Flash CS 5 в проект FlashDevelop. Обратите внимание, что я скопировал этот файл в папку проекта и включил его, а не просто включил файл прямо из пути CS5.

С тех пор мне подарили новый компьютер с Flash CS 5.5. Я перекомпилировал одну из своих swf-библиотек в CS 5.5, и теперь при запуске программы получаю:

Illegal override of createTextLine in flashx.textLayout.compose.ComposeState

Я полагаю, что файл tlfruntime.swc, включенный в проект FlashDevelop, устарел и должен быть обновлен файлом из CS 5.5. Итак, я скопировал tlfruntime.swc из пути CS 5.5, включил его в проект FlashDevelop (вместо более старого файла), но теперь я получаю это:

Illegal override of softKeyboardActivatingHandler in fl.text.container.TLFContainerController.

Может ли кто-нибудь помочь с тем, что еще мне нужно сделать, чтобы заставить TLFTextfields снова работать в CS 5.5?

ОБНОВЛЕНИЕ: я обновил FlashDevelop до 4.0.1 RTM, и теперь я получаю эту ошибку:

Illegal override of createGeometry in flashx.textLayout.elements.FlowGroupElement.

person Ashley Muller    schedule 03.04.2012    source источник
comment
Я действительно запутался, потому что, глядя на документы Adobe, я не вижу ни класса ComposeState, ни класса TLFContainerController (или даже пакета fl.text.container). Существует класс FlowGroupElement, но нет метода createGeometry даже в его родительском классе.   -  person Ashley Muller    schedule 03.04.2012
comment
В текущей версии FlowElementGroup нет метода createGeometry, поэтому, вероятно, возникает ошибка.   -  person weltraumpirat    schedule 03.04.2012


Ответы (1)


Очень жаль, что Adobe не распространяет tlfruntime.swc бесплатно, а также, похоже, не тратит много времени на объяснение изменений.

Я столкнулся с той же проблемой: API для TLFTextField изменился в TLF2, входящий в состав CS5.5. Самым заметным изменением было полное удаление TextLayoutFormatValueHolder (скатертью дорога!), но был и ряд других изменений, всех я не помню.

Копирование более нового tlfruntime.swc было правильным для начала, теперь вам также нужно адаптировать свой код, к сожалению. Вы должны открыть все части ваших старых библиотек, которые используют TLF, в FlashDevelop (как и при любой проверке кода во время редактирования, Flash IDE не сильно поможет) и посмотреть, есть ли какие-либо сообщения об ошибках, а затем свериться с последний API. Будьте осторожны с настройками фильтра — вы можете взглянуть на более старую версию TLFTextField!

По большей части эти изменения не требуют больших усилий. Я закончил за несколько часов. Но вполне могут быть некоторые крайние случаи, когда вам придется делать более обширные перезаписи.

person weltraumpirat    schedule 03.04.2012
comment
Спасибо за эту информацию, она дает мне гораздо больше понимания. FlashDevelop не выдает ошибок компилятора, но при отладке в FD я получаю ту же ошибку Illegal Override. К сожалению, я не получаю трассировку стека или какую-либо полезную информацию о том, какой вызов я делаю неправильно. Я проверил каждое свойство и метод, которые я вызываю из TLFTextField, по сравнению с документом API, на который вы ссылались выше, и все они там. Так что я не уверен, что я звоню неправильно :( - person Ashley Muller; 04.04.2012
comment
Как перейти на 4.5.1? Когда я открываю свойства проекта и перехожу к SDK, в списке отображается только 4.6.0. Я нажал «Управление» и развернул «Установленные Flex SDK», и снова в списке только 4.6.0. - person Ashley Muller; 04.04.2012
comment
Тогда это должен быть tlfruntime.swc. Вы уверены, что перекомпилировали все свои библиотеки? Возможно, старый SWC содержит более старую версию вещей, и загрузчику классов приходится иметь дело с конфликтующими библиотеками? - person weltraumpirat; 04.04.2012
comment
хм, я не перекомпилировал все свои библиотеки ресурсов... большинство из них все равно были бы скомпилированы из Flash CS 5. Я пройду и сделаю это сейчас, к сожалению, их около 40. - person Ashley Muller; 04.04.2012
comment
Сложный вопрос, но именно в этом и заключается проблема — в любом ресурсе с текстовым полем будет скомпилирован старый tlfruntime.swc. - person weltraumpirat; 04.04.2012
comment
ха-ха, это решило проблему ... перекомпилировал все библиотеки в CS 5.5, и теперь это работает. 2 дня насмарку, я должен был подумать об этом раньше! Спасибо большое за помощь! - person Ashley Muller; 04.04.2012