PDA

Просмотр полной версии : SetInterval-Что же он наделал =/


sxstudio
03.11.2005, 10:07
Ребят, у меня такая вот шляпа : Я имею некий мувик "IMAGE", лежащий в руте... и имею много картинок маленьких - превьюшек больших фото.... при нажатии на одну маленнькую картинку вылезет соответствующая большая... и загрузится в Мувике "image"... В Image пишу так :
onClipEvent (load) {
_visible = true;
_root.image._x = 500-_width/2;
_root.image._alpha = 0;
alpa = setInterval(function () {
_root.image._alpha = _root.image._alpha+3;
if (_root.image._alpha == 100) {
clearInterval(alpa);
}
}, 100);
}


Что это делает вы уже поняли?(Эффект плавного появления большой фотки после нажатия на соответствующую маленькую миниатюру)
Проблема в том, что загрузив таким образом штук эдак 35 фоток этот эффект перестает действовать... и фотки начинают уже грузиться моментально - хоп, и открылась =)... Грешу на то что где-то насифачил и происходит следущее - вновь загруженная фотка не имеет значение _alpha = 0, так у первой фотки станет начальное значение _alpha = 0 +3.. у второй 3+3... и так далее... А мне надо чтоб каждая фотка загруженная в мувик image имела нач. значение alpha = 0, чтоб alpha потом не плюсовалась с подгрузкой новой картинки...
Заранее благодарен!

unlexx
03.11.2005, 10:21
может проблема в том, что ты проверяешь на равенство? может лучше написать
if (_root.image._alpha > 100) {
_root.image._alpha = 100; //это так на всяк случай
clearInterval(alpa);
}

sxstudio
03.11.2005, 10:42
Да... это непричем - ведь альфа больше сотни не бывает....

iNils
03.11.2005, 11:03
Да... это непричем - ведь альфа больше сотни не бывает....
this.createEmptyMovieClip ("mc", 0);
mc.lineStyle (0, 0);
mc.beginFill (0);
mc.lineTo (100, 0);
mc.lineTo (100, 100);
mc.lineTo (0, 100);
mc.lineTo (0, 0);
mc.endFill ();
mc._alpha = 0;
this.onEnterFrame = function () {
mc._alpha += 3;
trace (mc._alpha);
};

unlexx
03.11.2005, 11:05
попробуй сделать символ qq и посомтри в окно OutPut

_root.qq._alpha = 103;
trace(_root.qq._alpha);

unlexx
03.11.2005, 11:07
как всегда пока пробовал во флеше iNils ответил :) респект iNils

sxstudio
03.11.2005, 17:46
Чем дело то кончилось ... ну я понил что может - просто картинка то не может быть прозрачней непрозрачного.... Кто нить по существу не поможет??

andr64
03.11.2005, 19:14
EnterFrame нада удалять -)

this.createEmptyMovieClip("mc", 0);
mc.lineStyle(0, 0);
mc.beginFill(0);
mc.lineTo(100, 0);
mc.lineTo(100, 100);
mc.lineTo(0, 100);
mc.lineTo(0, 0);
mc.endFill();
mc._alpha = 0;
this.onEnterFrame = function() {
if (mc._alpha<100) {
mc._alpha += 3;
} else {
delete this.onEnterFrame;
}
trace(mc._alpha);
};

iNils
03.11.2005, 20:06
Смысл в том, что надо проверять не на равно 100, а больше либо равно 100.
Кроме того прибавляя к нулевой альфе 3, вы получите альфа равное не 3, а 2.734375.

sxstudio
04.11.2005, 09:58
Не помогло - .... он гасит фото, а не проявляет.. и там маленький клочек, а нужно на всю фотку... когда подобрал координаты заливки, мувик начал уезжать влево, хотя там стоит центрирование... оч. странно!

$mival
05.11.2005, 06:52
короч, если совсем никак не пашет сделай ручками мувик, в котороом в пропертах картинки меняешь альфу, а не программно... :D как вариант!