PDA

Просмотр полной версии : Постепенное исчезновение и появление объекта при наведении курсора.


Flazhok
28.09.2008, 19:58
Всем привет!!!
Столкнулся с небольшой проблемкой...
Написал код, для исчезновения-появления клипа, при наведении курсора на кнопку:

button.onRollOver = function() {
this._parent.myClip._alpha-= 10;;
};
button.onRollOut = function() {
this._parent.myClip._alpha+= 10;
};

Дело в том, что нужно, чтобы при наведении курсора на кнопку - клип постепенно исчезал, а при убирании - появлялся обратно, так же плавно. А у меня он исчезает мигом до -10, а потом появляется в обратку без плавности. Что исправить в этом коде, что бы клип исчезал полностью плавно и вновь появлялся при убирании мышки?:bb:

Mur4ik
28.09.2008, 20:06
При наведении мышки на объект событие onRollOver/onRollOut срабатывает всего один раз...

Создайте функции исчезновения/появления клипа и внутри обработчиков вызывайте соответствующую функцию.
Или в крайнем случае сделайте уменьшение/увеличение прозрачности в цикле в коде обработчиков.
Но лучше, конечно, определить нужные функции.

Flazhok
28.09.2008, 20:20
Это ясно. А тогда подскажите пожалуйста, какую функцию нужно применить для плавного исчезновения, что бы она срабатывала не один раз? И, если вам не трудно, покажите код с примером этой функции??:quiet:

Mur4ik
28.09.2008, 20:33
давайте лучше вместе с Вами это сделаем...
Что именно Вам не понятно?
Понятие функции знакомо Вам?
Сможете сами создать функцию?
В теле функции Вам нужно в цикле уменьшать или увеличивать значение _alpha?
т.е Вы правильно делали, только нужно эти действия повторить несколько раз чтоб объект полностью стал прозрачным, для этого нужно использовать цикл...

Попробуйте для начала там же где и Вы писали только поместить строчки
this._parent.myClip._alpha-= 10; и ей противоположную в циклы...

Если не будет получатся, будем дальше разжевывать

Mur4ik
28.09.2008, 20:51
Общий смысл такой:
function hide():Void
{
// к клипу над которым сейчас мышка можно здесь обратиться как this
// здесь код исчезновения клипа
}

function show():Void
{
// к клипу над которым сейчас мышка можно здесь обратиться как this
// здесь код появления клипа
}

button.onRollOver = hide;

button.onRollOut = show;

Flazhok
28.09.2008, 21:04
Теоритически я знаком с функциями, могу скопировать - вставить куда нужно. А вот создавать их и сами их значения я не знаю. И как их циклить тоже.:bb:
Я привязал пример, того, что я делаю. Посмотрите-подскажите, пожалуйста, что там не так и как сделать, чтоб оно все-таки плавно исчезало?.. И как создавать циклы?, чтобы я выучил уже раз и навсегда!:p

Flazhok
28.09.2008, 21:18
Сделал так:
function hide():Void
{
this.myClip;
_alpha-= 50;
}

function show():Void
{
this.myClip;
_alpha+= 50;
}

button.onRollOver = hide;

button.onRollOut = show;
Всё равно исчезает быстро. Да еще и вместе с кнопкой..
Какой должен быть код исчезновения?

Mur4ik
28.09.2008, 21:56
а какой смысл в строчке this.myClip; ?

Значение _alpha может принимать значение от 0 до 100
вот и отнимайте по чуть-чуть чтоб не так быстро исчезало

function hide():Void
{
this._alpha -= 5;
if (this._alpha <= 0) {
delete this.onEnterFrame;
}
}

function show():Void
{
this._alpha += 5;
if (this._alpha >= 100) {
delete this.onEnterFrame;
}
}

button.onRollOver = function()
{
myClip.onEnterFrame = hide;
};

button.onRollOut = function()
{
myClip.onEnterFrame = show;
};

Flazhok
28.09.2008, 22:13
Мега спасибо!!!!!!!!!!
Клипец стал работать как нужно!
Респект, Mur4ik!:yahoo:

Flazhok
28.09.2008, 23:00
+ вопрос:
А можно ли сделать, чтобы картинка не исчезала, а допустим - расплывалась? Что применить вместо alpha?

Mur4ik
28.09.2008, 23:08
использовать фильтр blur

darksranger
28.09.2008, 23:09
var i:Number = 0
movieClip.onEnterFrame = function () {
i++
movieClip.filters = [new BlurFilter(i, i, 3)]
if (i>10){
delete i
delete movieClip.onEnterFrame
}
}

Wolsh
29.09.2008, 00:08
Я бы так сказал)
import flash.filters.BlurFilter
var blur:Number = 0;
mc.onRollOver = function(){
blur = 0
this.onEnterFrame = function(){
mc.filters = [new BlurFilter(blur,blur,3)];
if((blur+=2)>=50) delete this.onEnterFrame;
}
}
mc.onRollOut = function(){
this.onEnterFrame = function(){
mc.filters = [new BlurFilter(blur,blur,3)];
if((blur-=2)<=0) {
mc.filters = null;
delete this.onEnterFrame;
}
}
}

NRJalex
06.10.2008, 16:40
а можно ли в этот код добавить ограничитель блура? например, дойти до определенного значения? и еще можно ли сделать, чтобы немного быстрее "растворялось"?

darksranger
06.10.2008, 17:29
можно
import flash.filters.BlurFilter
var blur:Number = 0;
mc.onRollOver = function(){
blur = 0
this.onEnterFrame = function(){
mc.filters = [new BlurFilter(blur,blur,3)];
if((blur+=2)>=50) delete this.onEnterFrame;
}
}
mc.onRollOut = function(){
this.onEnterFrame = function(){
mc.filters = [new BlurFilter(blur,blur,3)];
if((blur-=2)<=0) {
mc.filters = null;
delete this.onEnterFrame;
}
}
}

в коде Wolsha, выделил цветом, то что красное - "скорость" то что зеленое - ограничитель