Если у вас есть пользовательский компонент, он, вероятно, будет находиться в пространстве имен, отличном от mx . Вы на правильном пути, удалив пространство имен, но вам не нужно этого делать. Рассмотрим следующий пример
<example:MyComponent xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:example="com.example.*">
</example:MyComponent>
В этом коде у нас есть собственный компонент с именем MyComponent в пакете com.example. Теперь, как мы можем добавить пользовательские состояния? Это просто!
<example:MyComponent xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:example="com.example.*">
<example:states>
<mx:State name="CustomState">
</mx:State>
</example:states>
</example:MyComponent>
Свойства компонента, такие как состояния , переходы или даже метка на кнопке, могут быть созданы как дочерние элементы. Эти свойства должны использовать то же пространство имен, что и экземпляр компонента. Неважно, откуда берется имущество в цепочке наследования. Даже если com.example.MyComponent расширяет mx.containers.Canvas, свойство states будет использовать пространство имен XML, в котором определен MyComponent.
Короче говоря, не думайте о свойстве states как mx: states , потому что префикс mx: свойства просто наследуется от компонента , Однако мы должны использовать mx: , когда определяем само фактическое состояние, потому что это класс (а не свойство), и этот класс определен в пространстве имен mx.
Чтобы продвинуться дальше в объяснении, вы можете изменить пространство имен http://www.adobe.com/2006/mxml на нечто иное, чем mx .
<zzz:VBox xmlns:zzz="http://www.adobe.com/2006/mxml">
<zzz:states>
</zzz:states>
</zzz:VBox>
В этом примере мы меняем mx на zzz . Теперь states должно иметь префикс zzz: вместо mx: .