Спасибо вам двоим, что объяснили, что как работает, не думал, что все так запутано здесь. Теперь понял, что к чему нужно прикручивать, что бы передать свойства из одной функции в другую
Переделал код Удава для своих нужд.
Вот конечный результат
Код AS1/AS2:
import mx.utils.Delegate;
class Test{
public var mc:MovieClip;
public var x:MovieClip;
public var y:MovieClip;
public var container:MovieClip;
public function a(container)
{
super();
trace("container= "+container);
this.mc = container;
this.x = container._x;
this.y = container._y;
// тут обработчик будет вызывать в области видимости объекта mc
//this.mc.onEnterFrame = mc_onEnterFrameHandler;
// тут в области видимости текущего объекта. Т.е. экземпляра Test
this.mc.onEnterFrame = Delegate.create(this, mc_onEnterFrameHandler);
// или что не понятно?
}
//private var mc:MovieClip;
private function mc_onEnterFrameHandler():Void
{
//trace(this);
trace(this.mc);
trace(this.mc._x)
}
}
для меня не было понятным, то, почему не доходили свойства самого клипа mc в функцию mc_onEnterFrameHandler()
То есть я ожидал изначально получить вот так результат trace(this._x) // равно 200
Так как trace(this) у меня показывал имя передаваемого клипа, то для меня было ОЧЕВИДНЫМ и передача вместе с ним все его свойства. Но оказывается просто так свойства клипа нельзя перенести в другую функцию. Надо использовать Delegate.
В итоге пришлось объявлять их специально. Так как для меня это еще не топаная тропа, не буду говорить, хорошо или плохо вот такой вид передачи свойств, будущее покажет.
|