Unsupported features
MXHX is heavily inspired by MXML, a markup language originally introduced in Macromedia Flex. However, not all features of MXML are supported by MXHX at this time. Some missing features may be implemented in future versions of MXHX, as need arises and time allows.
Component className attribute
The className
attribute of the Component
tag may be used in MXML to specify a AS3 class name to associate with the generated inline component. Specifying a class name for an inline component with <mx:Component>
is currently unsupported in MXHX.
Library and Definition tags
The <mx:Library>
and <mx:Definition>
tags were supported in MXML to provide reusable XML graphical assets to an MXML component. They are currently unsupported by MXHX.
Metadata tag
The Metadata
tag was supported in MXML as a way to define AS3 metadata, like [Event]
, on an MXML class. A similar <mx:Metadata>
tag for Haxe metadata, like @:event
, will be added in a future version.
Model binding
Binding syntax with curly braces is supported inside an Model
tag in MXML, but <mx:Model>
in MXHX does not support binding at this time. An error will be reported.
Private tag
The Private
tag was supported in MXML to provide metadata to tooling at compile-time. It is currently unsupported by MXHX.
Root implements attribute
The implements
attribute was supported in MXML to add an interface to the generated class. It is currently unsupported by MXHX.
Script tag
In Flex, developers can define fields and methods on an MXML class using a <mx:Script>
tag. This is currently unsupported in MXHX. Support for scripts involves integrating a custom Haxe language parser (that will need to be written in Haxe) because the Haxe macro interpreter can only parse expressions inside methods.
Developers can achieve a similar result to an <mx:Script>
tag in MXHX by defining fields and methods on a superclass that is written in Haxe, or by using the MXHXComponent.build()
macro.
Style tag
In Flex, developers can define CSS (Cascading Style Sheets) in an MXML class using a Style
tag. None of the GUI frameworks currently supported by MXHX include support for CSS, so MXHX does not implement a similar <mx:Style>
tag yet.
States
MXHX does not support states yet, and an error will be reported when attempting to use any of the following syntax for states.
- Setting properties for specific states with
propertyName.stateName="value"
syntax - The
includeIn
andexcludeFrom
attributes - The
<mx:Reparent>
tag
Two-way binding
Two-way binding syntax is currently unsupported in all forms, including:
- with curly braces, like
destination="@{source}"
- with the
<mx:Binding twoWay="true"/>
tag
However, one-way binding syntax with curly braces is supported, if the GUI framework allows it.
XML format attribute
The format
attribute of the XML
tag can be used in MXML to specify where to use the XML
class or the XMLDocument
class in AS3, but MXHX does not support an <mx:Xml>
format attribute. The Haxe Xml
class is always used.
XML binding
Binding syntax with curly braces is supported inside an XML
tag in MXML, but <mx:Xml>
in MXHX does not support binding at this time. An error will be reported.
XMLList tag
MXML could create an AS3 XMLList
object containing a collection of tags. MXHX requires XML to have a single root tag.