Читал твой урок тут. Респект, респект. :-) Теперь по делу. Все что ты написал не лишено смысла, но не подходит для моего случае. А случай тяжелый. Пишу мышиный компонент. Вот кусок кода:

Код:
#initclip
....................
function mouseClass() {
this.init();
}
mouseClass.prototype.init = function() {
theTarget = this._parent[this._targetInstanceName];
Mouse.hide();
theTarget.gotoAndStop("Out");
startDrag(theTarget, true);
ASBroadcaster.initialize(this);
};
Button.prototype.onRollOver = function() {
theTarget.gotoAndStop("Over");
};
...................
как видно theTarget объявлен в _root, что теоретически может вызвать конфликт, если юзер тоже определит в _root переменую с таким же названием. Если theTarget определить в обьекте, то из Button не будет его видно. Ну а определение в функции можно не обсуждать. Так как быть? Где определить этот не счастный theTarget, чтобы он был инкапсультирован в класс и в то же время чтобы Button видел. Выход нашел такой, что сделать mouseClass лисенером Button и писать код для onRollOver от mouseClass, а не от Button как приведено выше. Думал, что молодец, нашел выход, но батюшки. Макромедии опленились сделать addListener() для Button. That's suck. Вот собственно и всплыл вопрос. Как думаешь выйти из ситуации?