Я упростил свой mxml до двух элементов: Button и CheckBox. Кнопка имеет очень простой пользовательский скин, есть 3 состояния, которые просто загружаются напрямую из swc (BackButtonUp, BackButtonMouseover и BackButtonClick). Все отображается нормально и работает, если вы используете мышь. Если вы нажмете все, вот когда он рухнет.
Я скомпилировал против flex sdk 4.5 и 4.5.1. Оба дают одинаковые результаты. Нет предупреждений / ошибок ни в режиме разработки, ни для самого ActionScript. Я понятия не имею, что не так, потому что трассировка стека не дает мне никакого собственного кода.
Если я изменю свой скин на <s:Rect>
объекты, то все будет работать нормально. Только когда я использую загруженные символы SWC, происходит сбой.
Вылетает со следующим исключением (после нажатия клавиши TAB 6 раз):
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at fl.text::TLFRuntimeTabManager$/onKeyFocusChange()[F:\stage\Flash11.5_Main_325_Stage\main\authortool\Stage\tlfRuntime\fl\text\TLFRuntimeTabManager.as:73]
Это мое приложение mxml:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="400" height="400">
<s:layout>
<s:BasicLayout/>
</s:layout>
<s:Button x="10" y="10" skinClass="skins.BackButton" />
<s:CheckBox x="10" y="100" />
</s:Application>
Это мой пользовательский скин mxml - это имена символов в файле .swc):
<?xml version="1.0" encoding="utf-8"?>
<s:SparkButtonSkin
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:fb="http://ns.adobe.com/flashbuilder/2009"
minWidth="21" minHeight="21"
alpha.disabled="0.5"
xmlns:local="*" >
<fx:Metadata>
<![CDATA[ [HostComponent("spark.components.Button")] ]]>
</fx:Metadata>
<!-- states -->
<s:states>
<s:State name="up" />
<s:State name="over" />
<s:State name="down" />
<s:State name="disabled" />
</s:states>
<local:BackButtonUp id="buttonUp" includeIn="up, disabled"/>
<local:BackButtonMouseover id="buttonOver" includeIn="over"/>
<local:BackButtonClick id="buttonDown" includeIn="down"/>
</s:SparkButtonSkin>