Skip to content
dolph1n edited this page Feb 11, 2013 · 4 revisions

ObjectBuilder - языковое расширение, позволяющее создавать сложные объекты в декларативном стиле. Другими словами, это шаблон связанного класса. Этот шаблон может содержать:

##ObjectBuilder Blocks

class properties block

Блок свойств класса предназначен для указания значений любого свойства экземпляра класса в простой и компактной форме.

Sprite{ 
 x : 200; 
 y : 300; 
};

binding %(...)%

Вы можете использовать помеченные аннотацией Bindable свойства и методы в блоке свойств, аналогично тому как они используются в mxml. Для этого нужно взять их в конструкцию "%(...)%".

[Bindable] 
public var textValue : String = "";
....
public function method() : void {
    TextField{
        text : %(textValue)%;
    }
}

###event description block

Блок событий содержит всю информацию, связанную с обработкой событий.

TextField{ 
 text : "Hello World"; 
 onClick : {e => 
   this.setTextFormat(TextFormat(<font:String>){ 
     font : "_serif"; 
     size : 20; 
     align : TextFormatAlign.LEFT; 
   }); 
 }; 
}

###children block

Этот блок позволяет добавить детей. Такая возможность доступна только для подклассов DisplayObject.

Sprite{
  children : 
    [ 
      TextField{ 
        text : "Hello World!"; 
      } 
    ]; 
  children : 
    [ 
      SimpleButton(<upState:DisplayObject>){ 
        name : "myButton"; 
      } 
   ]; 
};

###init block

Этот блок даёт возможность задать функцию, которая будет вызвана после создания экземпляра. В пределах этого блока this указывает на экземпляр класса.

Init block is executed on instance creation. Extremely useful when you need this statement.

Sprite{ 
  init : { => 
    with (this.graphics) { 
      beginFill(0x000000, .4); 
      drawRect(0, 0, 600, 400); 
    } 
  }; 
};

###constructor parameters block

Опциональный блок появляется, только если конструктор имеет параметры.

public function myClass(a : int, b : int) {
  ...
}

public function method() : void
{
  myClass(1, 2){ 
    <<...>> 
  }; 
}

Clone this wiki locally