PDA

Просмотр полной версии : плавное масштабирование при наведении


3Desian
31.01.2009, 17:12
Приветствую флэшеров и не только. :)
Вот с чем столкнулся и не могу никак преодолеть. Есть такой код у меня

onEnterFrame = function () {
for (i=1; i<=10; i++) {
this["bd"+i].id = i; //В мувиках "bd"+i появляется переменная id со значением i

this["bd"+i].photo.onRollOver=function() { //при наведении на photo в определённом мувике
i=this._parent.id; // i принимает значение переменной id мувика "bd"+i
_root.Scale[i] = 3;// размер мувика меняется на 3
}

this["bd"+i].photo.onRollOut=function() {
i=this._parent.id; // i принимает значение переменной id мувика "bd"+i
_root.Scale[i] = 2;// размер мувика меняется на 2
}

bd[i]._xscale = k*5*Scale[i];
bd[i]._yscale = k*5*Scale[i];
} //for (i=1; i<=10; i++)
} // onEnterFrame = function ()

Всё работает чётко. Т.е. при onRollOver на мувик он увеличивается, а при onRollOut он уменьшается, но резко. Мне нужна плавность. Т.е. я понимаю, что нужно писать что то вроде
this["bd"+i].photo.onRollOver=function() { //при наведении на photo в определённом мувике
i=this._parent.id; // i принимает значение переменной id мувика "bd"+i
if (_root.Scale[i] <=3) {_root.Scale[i] += 0.1;}// размер мувика увеличивается до 3 с шагом 0.1
} Но при таком коде trace(Scale[i]) выдаёт: 2.1
Т.е. _root.Scale[i] += 0.1; срабатывает только один раз в момент onRollOver.

Как же написать грамотно, что бы _root.Scale[i] менялся плавно? Кто может подсказать, буду очень благодарен. :drinks:

Kuruki
31.01.2009, 17:31
Как же написать грамотно, что бы _root.Scale[i] менялся плавно?
Повесить _root.Scale[i] += 0.1 на другое событие, которое выполняется не один раз?

Я честно сказать не догнал, зачем вы вешаете всю эту функцию function () {
for (i=1; i<=10; i++) {
this["bd"+i].id = i; //В мувиках "bd"+i появляется переменная id со значением i

this["bd"+i].photo.onRollOver=function() { //при наведении на photo в определённом мувике
i=this._parent.id; // i принимает значение переменной id мувика "bd"+i
_root.Scale[i] = 3;// размер мувика меняется на 3
}

this["bd"+i].photo.onRollOut=function() {
i=this._parent.id; // i принимает значение переменной id мувика "bd"+i
_root.Scale[i] = 2;// размер мувика меняется на 2
}

bd[i]._xscale = k*5*Scale[i];
bd[i]._yscale = k*5*Scale[i];
}
на onEnterFrame...

3Desian
31.01.2009, 18:20
Я честно сказать не догнал, зачем вы вешаете всю эту функцию на onEnterFrame...
Ну у меня код весь в одном кадре и кроме масштабирования там имеется ещё и движение мувиков и т.д. Как тут без onEnterFrame?
Повесить _root.Scale[i] += 0.1 на другое событие, которое выполняется не один раз?
эээ... например? Мне нужно конкретно при onRollOver и onRollOut. Я писал _root.Scale[i] += 0.1 вне onRollOver т.е. в onEnterFrame, но выходит что то ничего. :confused:

Kuruki
31.01.2009, 18:57
Ну у меня код весь в одном кадре и кроме масштабирования там имеется ещё и движение мувиков и т.д. Как тут без onEnterFrame?
Ну то, что относится к движению оставить, а приведенная выше функция не нуждается в постоянном вызове, если я правильно ее понял. Ну вообщем, это ваше дело...

Мне нужно конкретно при onRollOver и onRollOut. Я писал _root.Scale[i] += 0.1 вне onRollOver т.е. в onEnterFrame, но выходит что то ничего.
что-то типа этого
this["bd"+i].photo.onRollOver=function() {
i=this._parent.id;
this.onEnterFrame = scaleUp;
}
...
function scaleUp(){
if(_root.Scale[this._parent.id] < 3){
_root.Scale[this._parent.id] += 0.1;
}else{
_root.Scale[this._parent.id] = 3;
delete this.onEnterFrame;
}
}

3Desian
31.01.2009, 19:30
Спасибо, Kuruki. Попробую и отпишу если что выйдет или не выйдет. Только у меня в конце всего кода, после onEnterFrame = function () { код } стоит stop(); что бы не было перехода в другой кадр. Воть. :)

Добавлено через 39 часов 21 минуту
Хм.... что то не работает. :(

Добавлено через 47 часов 5 минут
Блин... неужели нельзя написать в общем коде одного кадра что-то, что бы работала формула scale+=1, т.е. переменная плавно возростала при onRollOver на мувике? :( Прям обидно... истина где то рядом же, но моего опыта видимо не хватает. Хэлп ми сом бади? Плиз :)