У меня есть компонент, написанный для моего приложения сторонним разработчиком, и я пытаюсь его интегрировать, но я обнаружил ошибку, которая выглядит как ошибка компилятора или что-то вроде Flex и статических переменных работа, о которой я не знал.
В основном, у меня есть это:
public class ModeChangeController {
public static const DISPLAY_MODE:String = "DisplayMode";
}
public class Events {
public static const DISPLAY_MODE:String = "DisplayMode";
public static function myStaticFunction( viewState:String = null):void {
//Empty
}
}
<?xml version="1.0" encoding="utf-8"?>
<s:BorderContainer /*snip*/ >
<fx:Script><![CDATA[
import mypackage.sub1.ModeChangeController;
import mypackage.sub2.Events;
private function showInitialView():void {
// Variant 1
Events.myStaticFunction( Events.DISPLAY_MODE);
// Variant 2
Events.myStaticFunction( ModeChangeController.DISPLAY_MODE);
}
]]></fx:Script>
}
Если я использую // V2 (т.е. комментируем V1), при запуске приложения возникает ошибка (некоторые текстовые поля не редактируются и не содержат текста), но с // V1, а не с V2, он работает нормально. Если я закомментирую оба, это также работает нормально (я не получаю ошибку TextField).
Мне потребовалось некоторое время, чтобы выяснить, что именно эта статическая константная строка вызывала проблему, но я все еще не уверен, почему или если я могу что-то сделать с этим, кроме простого перемещения DISPLAY_MODE в Events ( что я и сделал на данный момент, но это не очень хорошее решение).
В журнале нет ошибок. Порядок включений в моем коде BorderContainer не имеет значения. Я погуглил «статический порядок инициализации as3 / flex», но ничего не нашел.
Кто-нибудь знает, в чем проблема?
Уточнение: showInitialView () никогда не вызывается . Он не попадет туда, пока не появится другая ошибка. Просто наличие линии V2 вызывает проблему.
Обновление: Я исправил проблему с тем, что строки TextInput не отображаются. Оказывается, добавление компонента привело к тому, что шрифт Tahoma не появился. Тем не менее, установка жирности шрифта для решения проблемы жирным шрифтом или переключение на Arial. С учетом сказанного, исходный вопрос все еще стоит , потому что когда я запустил его без V2, он обнаружил Tahoma с нормальным весом шрифта.