Просмотр полной версии : Область видимости свойства для обработчика
Вся проблема в том, что обработчик события не видит переменную определённую в том же классе:
class Test
{
private var object:MovieClip;
public function Test(__object:MovieClip)
{
object = __object;
object.onMouseDown = onDown;
}
function onDown():Void
{
trace(object);//undefined
}
}
Ну естесственно, ведь это AS2.
Delegate в помощь.
this.create
12.07.2007, 15:18
class Test {
private var object:MovieClip;
public function Test(__object:MovieClip) {
object = __object;
var ob:Test = this;
object.onMouseDown = function():Void {
trace(ob.object);
};
}
}
this.create, никогда больше так не делай.
Molecula
12.07.2007, 17:37
А как лучше, так:
class Test
{
private var object:MovieClip;
public function Test(__object:MovieClip)
{
object = __object;
object.onMouseDown = Delegate.create(this,this.onDown);
}
function onDown():Void
{
trace(object);//undefined
}
}
Упс...забыл.
Molecula, а код оформить?
this.create
12.07.2007, 17:47
this.create, никогда больше так не делай.
Почему? Вообще у Мука прочитал про этот способ...
Почему? Вообще у Мука прочитал про этот способ...
Плохой это способ.
this.create
12.07.2007, 17:56
Плохой это способ.
Чем. Вы объясните, я сделаю вывод о применений этого приема на практике.
— Объявление метода в методе;
— Паразитная переменная-ссылка;
— this ссылается не туда, куда нужно.
this.create
12.07.2007, 18:11
— Объявление метода в методе;
— Паразитная переменная-ссылка;
— this ссылается не туда, куда нужно.
метод в методе - это обработчик события? Т.е никакие обработчики внутри методов не допустимы? Делаем их дополнительными приватными методами класса и привязываем через Delegate?
паразитная ссылка - это не понятно.
а куда ссылается this? Я думал, что на экземпляр класса. Поэтому и свойства этого класса становятся доступными внутри вложенной в метод функции.
Методов в методах быть не должно.
Паразитная ссылка — ссылка, ссылающаяся на this.
Внутри onMouseDown this ссылается не туда, куда нужно.
this.create
12.07.2007, 18:30
__etc
У меня с каждым вашим ответом воникают новые вопросы. Я пока ничего больше по этому вопросу не стану спрашивать пока. Почитаю еще Мука. Надо понять на чем основаны некоторые ваши утверждения. Например о том что нельзя делать методы в методах.
На том, что это AS2, а не AS1. Общая организация всего должна быть правильной, а не такой, как в AS1.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.