Форум 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)
-   -   Почему в setinterval не работает prototype (http://www.flasher.ru/forum/showthread.php?t=77424)

petrochenko1981 25.03.2006 10:08

Почему в setinterval не работает prototype
 
Подскажите пожалуйста, почмему protorype не работает в setinterval. С чем это связано. Если я заменяю this._alpha = param1; на mc_1._alpha = param1; То всё работает. А таких мувиков, как mc_1 в которых находится картинка у меня много. В коде происходит изменение alpha мувика по синусойде. Как быть что делать помогите пожалуйста.

_global.param=100;
_global.checks=0;

MovieClip.prototype.SinAlpha = function (){

if (checks<>0) {param++;}

if (checks<>1) {param--;}

if (param>=100)
{
param=100;
checks=0;
}

if (param<=0)
{
checks=1;
param=0
}


n=(param/100)*(Math.PI/2);
param1=Math.sin(n)*100;
this._alpha = param1;

updateAfterEvent();

}
setInterval(_root.mc_1.SinAlpha, 30);

Madasan 25.03.2006 15:35

Если кидаешь ф-ю в setInterval, то ссылка на объект this внутри этой ф-ции будет undefined, можно передавать ссылку на объект в параметрах ф-ции. Но если надо обойти все мувики тогда можно использовать дополнительную ф-ю:
Код:

MovieClip.prototype.SinAlpha = function() {
        //.................................
        this._alpha = param1;
};
function changeAlpha() {
        _root["mc_"+n].SinAlpha();
        n++;
        if (n>10) {
                clearInterval(intID);
        }
}
n = 0;
intID = setInterval(changeAlpha, 30);


Nox Noctis 25.03.2006 16:51

причину Madasan назвал правильно.
а исправить ошибку очень просто, нужноизменить последнюю строчку так:

setInterval(_root.mc_1, "SinAlpha", 30);


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

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