PDA

Просмотр полной версии : class <= addListener


Kan
17.10.2005, 16:00
Создаю класс:

class ball{
....

Mouse.addListener(this);
onMouseDown = function{
что-то происходит
}
....
}
это не работает...в классе нельзя создавать слушатель, или я что-то делаю не так?
Только начинаю изучать классы...подскажите

7thsky™
17.10.2005, 19:38
а ты че так и пишешь? и не работает?

silin
17.10.2005, 21:11
7thsky™ прав, не зная чего ты добиваешься, нельзя сказать..
вот так(если определять в контрукторе), например, работает:
class Ball{
function Ball(){
var o=this;
Mouse.addListener(o);
o.onMouseDown = function(){
trace('MouseDown');
}
}
}

Kan
23.10.2005, 00:30
я понимаю, что это дело в конструкторе.
Но почему нельзя сразу повесить слушателя this?

class Ball{
function Ball(){
Mouse.addListener(this);
this.onMouseDown = function(){
trace('MouseDown');
}
}
}

Почему так не работает?...спасибо за помощь

silin
23.10.2005, 20:50
думаю, потому листером может быть тока объект (это было в AS1: класс и был объектом..,или что-то типа, в ас2 эземпляр с классом разделены)
еще думаю, что все мона, если знать чего добиывешься (а у тебя неясно..)

7thsky™
23.10.2005, 21:39
я понимаю, что это дело в конструкторе.
Но почему нельзя сразу повесить слушателя this?


class Ball{
function Ball(){
Mouse.addListener(this);
this.onMouseDown = function(){
trace('MouseDown');
}
}
}

Почему так не работает?...спасибо за помощь
Твой вариант вообще должен дать ошибку компиляции.

Надо объявлять переменную заранее, или dynamic class

class Test {
public var onMouseDown;
function Test () {
Mouse.addListener (this);
this.onMouseDown = function () {
trace ('MouseDown');
};
}
}