-
Notifications
You must be signed in to change notification settings - Fork 2
Annotations (ru)
###[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();
}
}
}