Форум 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=138359)

TurboDizel 05.04.2010 22:52

Увеличение кнопки
 
Привет. Делаю так, что бы при наведении мыши на кнопку, кнопка увеличивалась до 130%, а когда мышь отводится, кнопка обратно возвращается до 100%. Но дело в том что она почему то не увеличивается, но когда я дописываю просто в строчечку _root , то увеличивается вся сцена вместе с кнопкой. И по идеи если убрать _root, то должна только кнопка увеличиваться (наплел в общем чуши, но думаю меня поняли). Вот код, пожалуйста укажите ошибку:
Код AS1/AS2:

function onRollOver_f ()
{
        this.onEnterFrame = function ()
        {
                if (this._xscale<130)
                {
                        this._xscale += 5;
                        this._yscale += 5;
                }
        }
}
 
function onRollOut_f ()
{
        this.onEnterFrame = function ()
        {
                if (this._xscale>100)
                {
                        this._xscale -= 5;
                        this._yscale -= 5;
                }
        }
}
 
password_btn.onRollOver = onRollOver_f;
password_btn.onRollOut = onRollOut_f;

password_btn - это кнопка

Может ли быть что не работает из-за того что у меня в начале кадра написано stop(); и вообще находится кнопка на 3 кадре, можно сказать по среди флешки? - в таком случае как сделать такую кнопку что бы вставить по среди флешки

Заранее благодарю

mooncar 05.04.2010 22:59

Этот код должен работать, как вами задумано - в нем ошибок нет.
Ищите косяки в других местах.

TurboDizel 05.04.2010 23:02

Косяк уже понял какой, то что у меня в начале стоп кадру написано, естественно работать не будет там же onEnterFrame, как тогда сделать что бы кнопочка работали без этой функции на одном кадре?

mooncar 05.04.2010 23:05

Вложений: 1
При чем тут stop() и onEnterFrame - связи между ними нет никакой.
Если вы вызываете onEnterFrame, она так и будет работать, пока не сделаете delete onEnterFrame.
См. пример - все работает, все в одном кадре.

TurboDizel 05.04.2010 23:09

Цитата:

Сообщение от mooncar (Сообщение 898241)
При чем тут stop() и onEnterFrame - связи между ними нет никакой.
Если вы вызываете onEnterFrame, она так и будет работать, пока не сделаете delete onEnterFrame.
См. пример - все работает, все в одном кадре.

Хм, странно, спс за подсказку а то бы с onEnterFrame мучался бы =)

mooncar 05.04.2010 23:14

Пожалуйста.
На будущее - если у вас не очень большой код, то можно так и оставить, все будет работать.
Но правильно будет после достижения пределов возрастания-убывания удалять соответствующую onEnterFrame, иначе она так и остается работать.
Типа
Код AS1/AS2:

function onRollOver_f ()
{
        this.onEnterFrame = function ()
        {
                if (this._xscale < 130)
                {
                        this._xscale += 5;
                        this._yscale += 5;
                }
                else {
                        delete this.onEnterFrame ;
                }
        }
}
 
function onRollOut_f ()
{
        this.onEnterFrame = function ()
        {
                if (this._xscale > 100)
                {
                        this._xscale -= 5;
                        this._yscale -= 5;
                }
                else {
                        delete this.onEnterFrame ;
                }               
        }
}


TurboDizel 05.04.2010 23:17

Цитата:

Сообщение от mooncar (Сообщение 898246)
Пожалуйста.
На будущее - если у вас не очень большой код, то можно так и оставить, все будет работать.
Но правильно будет после достижения пределов возрастания-убывания удалять соответствующую onEnterFrame, иначе она так и остается работать.
Типа

А из-за того что она останется могут быть какие-то проблемы?

mooncar 05.04.2010 23:20

Для вашего текущего проекта, вероятно нет. Одна забытая onEnterFrame погоды не сделает. Но вот 50 - уже может.
Просто вы опасно привыкните не убирать ненужное, а потом будете мучиться на крупном проекте - отчего все тормозит.
Или вдруг в каком-то другом проекте условие опять выполнится и забытая функция непредсказуемо отработает, вот и будете искать в 10 000 строках кода, что у вас могло сработать.
Учитесь все организовывать изначально верно. Убирать артефакты.
PS. То же относится к слушателям и т.д.

TurboDizel 05.04.2010 23:25

Большое спасибо =) Такому в видеоуроках не учат, к сожалению. А кнопочку придется отложить, и делать дальше


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

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