Форум 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)
-   -   Гладкое увеличение кнопок (http://www.flasher.ru/forum/showthread.php?t=130950)

Ануб 09.10.2009 10:00

Гладкое увеличение кнопок
 
Вложений: 1
Очень нравится плавное увеличение/уменьшение кнопок в игре "счастливый фермер" при наведении/отведении курсора мыши, захотел сделать такое же. Вроде бы всё получилось, но работает хреново - иногда дрожит вместо начала увеличения, как бы застряв на старте. Особенно это видно при наведении мыши на самый край мувиклипа.

Прошу разъяснить, что нужно поправить в коде, чтобы работало как часы.

Во вложении исходник CS3

Сам код:

Код AS1/AS2:

var bglowfilter = new flash.filters.GlowFilter();
bglowfilter.color = 0x000000;
bglowfilter.strength = 0.35;
bglowfilter.blurY = 15;
bglowfilter.blurX = 15;
var bglowfilter_arr:Array = new Array();
bglowfilter_arr.push(bglowfilter);
 
function scbuttons(tar) {
        var b1:MovieClip = tar;
        b1.filters = bglowfilter_arr;
        b1.sc = 100;
        b1.scmax = 170;
        b1.scdelta = 14;
        b1.over = 0;
        b1.onRollOver = function() {
                this.over = 1;
                this.swapDepths(_root.getNextHighestDepth());
                scaling();
        };
        b1.onRollOut = function() {
                this.over = 0;
                scaling();
        };
        function scaling() {
                if (b1.over == 1) {
                        b1.onEnterFrame = function() {
                                if (this.sc<this.scmax) {
                                        this.sc += this.scdelta;
                                        this._xscale = this.sc;
                                        this._yscale = this.sc;
                                } else {
                                        this.onEnterFrame = null;
                                }
                        };
                } else {
 
                        b1.onEnterFrame = function() {
                                if (this.sc>100) {
                                        this.sc -= this.scdelta;
                                        this._xscale = this.sc;
                                        this._yscale = this.sc;
                                } else {
                                        this.onEnterFrame = null;
                                }
                        };
 
                }
        }
}
scbuttons(b1);
scbuttons(b2);
scbuttons(b3);


woland24 09.10.2009 13:26

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

GreyClown 09.10.2009 14:14

Вложений: 1
а что мешает сделать так?

Код AS1/AS2:

var size:Number = 50;
 
b1.onRollOver = function(){
        var s:Number = 0;
        onEnterFrame = function(){
                if(s<=size) {
                        b1._xscale = 100 + s;
                        b1._yscale = 100 + s;
                        s+=10;
                }                       
        }
}
 
b1.onRollOut = function(){
        var s:Number = 0;
        onEnterFrame = function(){
                if(s<=size) {
                        b1._xscale = 100 + size - s;
                        b1._yscale = 150 - s;
                        s+=10;
                }                       
        }
}

исходник приаттачил

там уж сам подгонишь под свои нужды

samana 12.10.2009 22:03

Этот лучше, потому что когда перестает быть нужным, onEnterFrame удаляется, и не грузит комп без причины.
Код AS1/AS2:

clip.onRollOver = function() {
        this.onEnterFrame = function() {
                if (this._xscale < 200) {
                        this._xscale = this._yscale += 10;
                }
        };
};
clip.onRollOut = clip.onDragOut = function () {
        this.onEnterFrame = function() {
                if (this._xscale > 100) {
                        this._xscale = this._yscale -= 10;
                }
                if (this._xscale == 100) {
                        delete this.onEnterFrame;
                }
        };
};



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

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