PDA

Просмотр полной версии : Как обратиться к клипу, используя относительный адрес, из функции, прикрепленной к...


джонатан
11.11.2008, 13:47
Добрый день! Не влез вопрос в заголовок, поэтому прошу модераторов не закрывать мою тему. Вот у меня возник такой вопрос:

Как обращаться к клипу, используя относительный путь, из функции, которая вызывается событием, прикрепленным к объекту (например слушателю). Привожу в пример код:


var keyLst:Object = new Object();

function myFunction() {
this._x += 10;
}

keyLst.onKeyDown = myFunction;

Key.addListener(keyLst);


В данном случае, this приведет к объекту keyLst.


function myFunction() {
trace(this); // Вывоодит [object Object]
trace(typeof(this)); // object
trace(this._parent); // undefined
trace(_parent); // undefined
}


Очень не хочется использовать _root или my_mc._parent. Подскажите пожалуйста, как граммотнее поступают в данных ситуациях!?
Боагодарю.

etc
11.11.2008, 16:07
Ещё одна жертва хелпа :(

function onKeyDown() {
this._x += 10;
}

Key.addListener(this);

джонатан
11.11.2008, 17:33
Хм... Прикольно. Спасибо.
А вот если у меня не один слушатель!? Например кроме слушателя клавиатуры, нужен и слушатель мыши. Как быть в таком случае?

Я вот придумал пока только так:


var keyLst:Object = new Object();

keyLst.parent = this;

function myFunction() {
this.parent._x += 10;
}

keyLst.onKeyDown = myFunction;
Key.addListener(keyLst);


Зло данный способ, или не зло? Дурной тон, или же приемлимый?

etc
11.11.2008, 17:47
А что, имена обработчиков событий мыши и клавиатуры пересекаются?

А указанный способ безусловно зло, объект keyLst — мусор.

джонатан
11.11.2008, 18:19
Нет. Я имею виду, что один и тот же клип, я ведь не смогу зделать слушателем двух разных классов. Т.е. в моем случае this, это _root, и ведь не будет работать следующее:


Key.addListener(this);
Mouse.addListener(this);

etc
11.11.2008, 21:04
Почему не будет работать? С чего бы?