PDA

Просмотр полной версии : mc.onEnterFrame = _root.func(); и this


Kotenochek
21.02.2006, 15:24
В _root прописана некая функция func(), которая должна срабатывать в нескольких мувиках каждый кадр... Хотелось бы использовать в этой функции this и _parent, но они упорно ссылаются на рут, а не на мувик в котором вызывается функция. ЧТО ДЕЛАТЬ?

Homo Sapiens
21.02.2006, 15:33
Повеситься. Так проще всего.

Homo Sapiens
21.02.2006, 15:34
Для каждого ролика присвой функцию, сделай _lockroot - должно помочь

Kotenochek
21.02.2006, 15:36
Для каждого ролика присвой функцию, сделай _lockroot - должно помочь

А можно поподробней? "Для чайников"?

Leezard
21.02.2006, 15:38
Функция прописана в руте и this указывает на рут.

Навскидку

function halfAlpha(mcName){
_root[mcName]._alpha=50;
}

А еще enterFrame...
вызов в твоем случае:

mc.onEnterFrame = _root.halfAlpha(_name);


еще есть прототипы, классы ...

Kotenochek
21.02.2006, 15:59
Смысл понятен, но _root[mcName] будет работать только если мувик в руте лежит... можно конечнонаписать

function halfAlpha(mcName){
mcName._alpha=50;
}

mc.onEnterFrame = _root.halfAlpha(mc);

но неужели нет более красивого спрособа?

Leezard
21.02.2006, 16:08
Смысл понятен, но _root[mcName] будет работать только если мувик в руте лежит... можно конечнонаписать

function halfAlpha(mcName){
mcName._alpha=50;
}

mc.onEnterFrame = _root.halfAlpha(mc);

но неужели нет более красивого спрособа?

Будет работать где бы не лежал мувик, если ты в качестве mcName будешь подставлять полное имя свего мувика.

Если нужен красивый метод читай про прототипы.

Kotenochek
21.02.2006, 16:13
Спасибо почитаю...

KUZEN
21.02.2006, 16:20
Собственно с прототипами всё просто

MovieClip.prototype.p_changeAlpha = function() {
this.onEnterFrame = function() {
if (this._alpha == 0) {
delete this.onEnterFrame();
} else {
this._alpha -= 1;
}
};
};
// Пример использования
my_mc.p_changeAlpha();

Leezard
21.02.2006, 16:27
MovieClip.prototype.halfAlpha=function(){
this._alpha=50;
}


Вызывается:


mc.onEnterFrame= function(){
this.halfAlpha();
}

Kotenochek
21.02.2006, 17:02
Ой! Спасибо всем огромное!!!!!!! Теперь все понятно!!!!! Мяу мяу мяу!!!!! Что бы я без вас делала!!!!!!!!

Leezard
21.02.2006, 17:08
Повесилась бы. :cool:

KUZEN
21.02.2006, 21:08
Ой! Спасибо всем огромное!!!!!!! Теперь все понятно!!!!! Мяу мяу мяу!!!!! Что бы я без вас делала!!!!!!!!
Сама бы допёрла )))