Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   Как плавно сделать анимацию ?? (http://www.flasher.ru/forum/showthread.php?t=52830)

megmage 18.12.2003 10:30

Как плавно сделать анимацию ??
 
Я аттачментом всталяю мувик и прописыванию для него события при наезде на него мышью:

Mc01.onRollOver = function () {
for (i=0;i <=20;i++){
setProperty(Mc01,_xscale,100+i);
setProperty(Mc01,_yscale,100+i);
}
}

т.е. изменение масштаба при ролловере.
Т.к. расчет происходит в одном фрейме - то изменения происходят сразу со 100% на 120%.

Подскажите пожалуста как мне написать код чтобы изменение проиходило плавно??

best regards megmage

Dimonius 18.12.2003 13:50

Через интервалы.

setInterval()

opex 18.12.2003 14:42

зачем же так сложно юзай onEnterFrame

Код:

i = 1;
_root.onEnterFrame = function() {
        if (_root.but.hitTest(_xmouse, _ymouse, true)) {
                if (_root.but._xscale<=120) {
                        _root.but._xscale += i;
                        _root.but._yscale += i;
                }
        } else {
                if (_root.but._xscale>=100) {
                        _root.but._xscale -= i;
                        _root.but._yscale -= i;
                }
        }
};

создай на руте мув под именем but и швырни этот код в первый кадр

megmage 18.12.2003 16:01

2 Dimonius - я пробовал через setInterval неработает или кривые руки мешают мне сделать правильно :)

2 OPEX - понимаешь мне надо сделать именно на RollOver и RollOut == конечно можно сделать по замороченно через createEmptyMovieClip и добавить в него функцию изменения масштаба, а потом на RollOver просто поменять клипы местами.. хотелось всё сделатьв один приход)

opex 18.12.2003 16:22

ну если не можеш через интервалы то можно конечно придумать и чтото типо этого

Код:

p = 0;
_root.but.onRollOver = function() {
        p = 1;
};
_root.onEnterFrame = function() {
        if (_root.but._xscale<=120 && p == 1) {
                _root.but._xscale += 1;
                _root.but._yscale += 1;
        }
};


2K WebStudio 18.12.2003 16:25

Знаешь, мрожет я ничего и не понимаю, но может тебе помогут эти комментарии:)))
Код:

i = 1;
_root.onEnterFrame = function() {
        if (_root.but.hitTest(_xmouse, _ymouse, true)) {
//Этот оператор if смотрит, на клипе мышка, или нет!!!
                if (_root.but._xscale<=120) {
//Если да, то он проверяет, масштаб мувика на <=120!
                        _root.but._xscale += i;
                        _root.but._yscale += i;
//И меняет масштаб, если меньше 120!
                }
        } else {
//Если мышка не на клипе, то он доводит масштаб до 100!!!
                if (_root.but._xscale>=100) {
                        _root.but._xscale -= i;
                        _root.but._yscale -= i;
                }
        }
};

Вот только одного не пойму!
Нет, чтобы попробовать вставить!!!

opex 18.12.2003 16:29

2K WebStudio я бы даже сам так не смог :)

Nox Noctis 18.12.2003 16:51

Вложений: 1
а я бы покрасил в зеленое :)
Код:

MovieClip.prototype.scaleTo = function(scale) {
        var step = (scale-this._xscale)*.1;
        this._xscale += step;
        this._yscale = this._xscale;
        return Math.abs(step)>.1;
};
mc.onRollOver = function() {
        this.onEnterFrame = function() {
                if (!this.scaleTo(150)) {
                        delete this.onEnterFrame;
                }
        };
};
mc.onRollOut = function() {
        this.onEnterFrame = function() {
                if (!this.scaleTo(100)) {
                        delete this.onEnterFrame;
                }
        };
};


Nox Noctis 18.12.2003 16:57

или можно еще так сделать:
Код:

MovieClip.prototype.scaleTo = function(scale) {
        this.scaleTo.scale = scale;
        this.onEnterFrame = function() {
                var step = (this.scaleTo.scale-this._xscale)*.1;
                this._xscale += step;
                this._yscale = this._xscale;
                if (Math.abs(step)<.1) {
                        delete this.onEnterFrame;
                }
        };
};
mc.onRollOver = function() {
        this.scaleTo(150);
};
mc.onRollOut = function() {
        this.scaleTo(100);
};

так пользоваться попроще, но MovieClip.scaleTo тогда не такая универсальная

opex 18.12.2003 16:57

загнул однако


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

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