Линия продуктов Flex. Набор базовых утилит и библиотек для создания RIA. Работа с MXML. Основы MXML синтаксиса, страница 2

Использование символа \ при задании значения свойства типа String

  • MXML компилятор автоматически экранирует символ \ в MXML, когда встречает его в значении свойства типа String. В этом случае "\" заменяется на "\\". Это необходимо, так как ActionScript компилятор воспринимает как \ только экранированную последовательность, "\\".

Символ перевода строки в значении поля типа String

  • В случае с полем типа String символ новой строки можно вставить двумя способами:
  • Используя последовательность в MXML
  • Используя последовательность "\n" в ActionScript
  • В случае с код нужно использоваться в MXML, типа так:
  • <mx:TextArea width="100%" text="Display Content"/>

  • В случае с ActionScript пример следующий, обратите внимание на привязку данных в MXML:
  • <mx:Script> <![CDATA[ [Bindable] public var myText:String = "Display" + "\n" + "Content"; ]]> </mx:Script> <mx:TextArea width="100%" text="{myText}"/>

Задание массивов примитивов

  • Когда необходимо задать свойство объекта, имеющее тип массива, в MXML, используются вложенные тэги. В данном примере свойство dataProvider содержит массив чисел:
  • <mx:List width="150"> <mx:dataProvider> <mx:Array> <mx:Number>94062</mx:Number> <mx:Number>14850</mx:Number> <mx:Number>53402</mx:Number> </mx:Array> </mx:dataProvider> </mx:List>

  • Тэги <mx:Array> и </mx:Array> вокруг списка элементов массива вообще говоря необязательны. То есть, можно сократить пример вот так:
  • <mx:List width="150"> <mx:dataProvider> <mx:Number>94062</mx:Number> <mx:Number>14850</mx:Number> <mx:Number>53402</mx:Number> </mx:dataProvider> </mx:List> Flex автоматически произведет необходимые преобразования при компиляции и свойству будет присвоен массив.

Присвоение значений полям с пользовательским типом

  • Пользовательские типы MXML также присваиваются в виде вложенного тэга:
  • <mynamespace:MyComponent> <mynamespace:nameOfProperty> <mynamespace:typeOfObject prop1="val1" prop2="val2"/> </mynamespace:nameOfProperty> </mynamespace:MyComponent>

ActionScript класс, представляющий собой объект типа Address. Он является свойством классам PurchaseOrder

  • class Address
  • {
  • public var name:String;
  • public var street:String;
  • public var city:String;
  • public var state:String;
  • public var zip:Number;
  • }

PurchaseOrder

  • import example.Address;
  • class PurchaseOrder {
  • public var shippingAddress:Address;
  • public var quantity:Number;
  • ...
  • }

В MXML экземпляр PurchaseOrder определяется

  • <mynamespace:PurchaseOrder quantity="3" xmlns:e="example"> <mynamespace:shippingAddress> <mynamespace:Address name="Fred" street="123 Elm St."/> </mynamespace:shippingAddress> </mynamespace:PurchaseOrder>

  • Если свойство shippingAddress имеет тип Address или его подкласс (например, DomesticAddress), значение можно присваивать следующим образом:
  • <mynamespace:PurchaseOrder quantity="3" xmlns:e="example"> <mynamespace:shippingAddress> <mynamespace:DomesticAddress name="Fred" street="123 Elm St."/> </mynamespace:shippingAddress> </mynamespace:PurchaseOrder>

  • Если свойство явно задано как Object, можно использовать тэг mx:Object
  • class ObjectHolder {
  • public var value:Object
  • }

  • в MXML:
  • <mynamespace:ObjectHolder> <mynamespace:value> <mx:Object foo='bar' /> </mynamespace:value> </mynamespace:ObjectHolder>

пример присвоения свойству типа Object массива в MXML