Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   mc.onEnterFrame = _root.func(); и this (http://www.flasher.ru/forum/showthread.php?t=75851)

Kotenochek 21.02.2006 15:24

mc.onEnterFrame = _root.func(); и this
 
В _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

Цитата:

Сообщение от Homo Sapiens
Для каждого ролика присвой функцию, сделай _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

Цитата:

Сообщение от Kotenochek
Смысл понятен, но _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();
        }



Часовой пояс GMT +4, время: 17:21.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.