Хотя я никогда не пытался сделать что-то подобное и поэтому не могу сказать точно, я собираюсь предположить, что странные ошибки, которые вы получаете в SWFAddress, вызваны вашим чрезмерным использованием статики. Вы определяете статическую переменную, когда приводите ее в статическое пространство имен на основе другой статической переменной. Компилятор, вероятно, говорит, что void возвращается, потому что одна статика определяется перед другой, и значение по умолчанию для неопределенной статики, скорее всего, void, а не null. Трудно сказать наверняка, так как для этого потребуется просмотреть исходный код тамарина C ++, но я все равно назову его. Чрезмерное использование статики, как в случае вашего кода, свидетельствует о недостаточном понимании структур классов и объектов. Единственный раз, когда вы должны определять статику, это когда вы хотите определить типы объекта или что-то в этом роде. Например, класс MouseEvent имеет статические значения, чтобы определить, какой тип событий мыши может быть создан: MouseEvent.MOUSE_DOWN и т. Д. Попробуйте изменить классы, чтобы они были созданы правильно, используя методы и переменные уровня объекта вместо статических. Или, если вы хотите просто выполнить свой проект здесь, попробуйте определить статические переменные, основанные на других статических переменных внутри функций, которые вы вызываете вручную, а не в пространстве имен static / class.
* Обновление *
Трудно объединить все это в один ответ, но в основном так работают статики, они являются первой вещью, создаваемой виртуальной машиной, и являются постоянными. Они не являются динамическими или одноразовыми объектами, тип объектов, которые виртуальная машина была действительно создана для использования. Статика определяется прежде всего, поэтому в случае нечетной ошибки, когда вместо логического значения вы получаете пустоту, это происходит потому, что, когда компилятор или виртуальная машина перемещается вниз по списку «дел», они всплывают так: наверх и делает их в первую очередь. Однако он, вероятно, пытается определить статическую переменную _availability до того, как статическая переменная ExternalInterface.available будет полностью определена. Я надеюсь, что это добавляет немного пояснения к первоначальному ответу.