Иногда бывает нужно "перенести" область видимости того или иного метода в "другое место", и тут нам на выручку приходит класс Delegate
простейший пример на котором я понял как он работает заключался в загрузке хмл
Код:
class ParseXML{
private var _xml:XML = null;
public function MyXML(url:String){
this.init();
}
private function init(url:String):Void{
if(path){
_xml = new XML();
_xml.ignoreWhite = true;
_xml.onLoad = mx.utils.Delegate.create(this, doIt);
_xml.load(path);
}
}
private function doIt(success):Void {
if(success) trace("done");
}
}
Так же может понадобиться при использовании setInterval
данный вариант работать не будет
Код:
var id = setInterval(function () {
this.ball_mc._x += 5;
}, 50);
Зато будет работать этот
Код:
var id = setInterval(mx.utils.Delegate.create(this, function () {
this.ball_mc._x += 5;
}), 50);