Skip to content
Dima Kruk edited this page May 4, 2013 · 1 revision

###[Live] Классы, помеченные аннотацией [Live], будут подготовлены для live-сессии.(Учитывается при указании "Annotated with [Live]" в "Run Configuration").

###[LiveCodeUpdateListener] Методы, которые помечены аннотацией [LiveCodeUpdateListener], будут вызваны после каждого валидного обновления кода в пределах класса. У всех параметров таких методов должны быть определены значения по умолчанию.

###[LiveCodeUpdateListener(method="", classFqn="", priority="", weak="")] Расширенный вариант аннотации, в котором можно уточнить условия, при которых будет вызван помеченный метод.

  • method - имя метода, на изменение которого нужно вызвать помеченый метод; (по умолчанию все методы класса)
  • classFqn - полное имя класса, на изменение которого нужно вызвать помеченый метод; (по умолчанию текущий класс)
  • priority - приоритет вызова, помеченного метода, в случае совпадения условий; (по умолчанию имеет значение 0)
  • week - использование слабых ссылок; (по умолчанию имеет значение true). Указание этого параметра может понадобиться, в тех редких случаях, когда сборшик мусора считает, что объект класса больше не имеет ссылок.

Если нужно чтобы метод вызывался при любом изменении Live-классов, то нужно указать classFqn="*".

Параметры method и classFqn могут быть указаны без кавычек, в таком случае будет работать автокомплит и проверка типов.

###[LiveAssetUpdateListener(field="")] Метод помеченный аннотацией [LiveAssetUpdateListener] будет вызван при изменении ассетов, которые были добавлены через аннотацию [Embed]. Если нужно отслеживать изменение конкретного ассета, то нужно уточнить имя свойства в field.

###[LiveCodeDisable] Данной аннотацией можно помечать классы (в случае "All the methods") или методы, которые не будут подготавливатся для live-сессии.

##Примеры Помечая метод аннотацией [LiveCodeUpdateListener], нужно учитывать, что код метода будет вызыватся при каждом изменении в пределах класса (если не указаны уточняющее параметры). Если в методе что-то рисуется, добавляется в дерево отображения, то необходимо предусмотреть метод, который будет "подчищать" перед повторным вызовом. В Примере показан один из вариантов такого подхода. В данном случае метод clear будет вызван при изменениях в методе method, а указание priority дает гарантию того, что clear будет вызван перед method.

package com.example {
	import flash.display.Sprite;
	import flash.display.Graphics;
	
	[Live]
	public class Main extends Sprite {
		private var _someSprite : Sprite;

		public function Main() {
			_someSprite = new Sprite();
			
			method();
		}

		[LiveCodeUpdateListener(method="method")]
		public function method() : void {
			
			addChild(_someSprite)
			
			var g : Graphics = this.graphics;
			g.beginFill(0x2f2f2f);
			g.drawRect(10,10,100,100);
			g.endFill();
		}
		
		[LiveCodeUpdateListener(method="method", priority="10")]
		private function clear() : void {
			
			removeChild(_someSprite);
			
			this.graphics.clear();
		}
	}
}
Clone this wiki locally