PDA

Просмотр полной версии : Альфа появление и исчезновение


ryudzaki
26.08.2009, 14:55
Есть клип, в который грузятся 14 clip-ов из библиотеки с определенным промежутком времени от 500 до 4000 милисек. Задача состоит в том, чтобы к примеру клип1 появлялся с помощью альфы, отображался некоторое время и исчезал тоже альфой.
Потом появлялся следующий и т.д.
Я с этой задачей справиться не могу. Прошу Вашей помощи!

function attachRandomClip() {
var num = Math.ceil(Math.random() * 14 + 1);
var clip = attachMovie("re" + num, "newName", 1000);
clip._alpha = 0;
function() {
clip._alpha += 1
if (clip._alpha >= 100)
{
delete this.onEnterFrame;
}
}

{
clip._x = 0;
clip._y = 0;
}
}
var i = Math.ceil(Math.random() * 4000 + 500);
var intervalID:Number = setInterval(attachRandomClip, i);

Dezar
26.08.2009, 15:04
для начала рекомендую то чему равно I засунуть в сам интервал..а то у вас данное значние будет определено только 1 раз.и меняться больше не будет.

во вторых.интервал времени равныы 500 мс это слишком мало чтобы успеть убрать прозрачность.

в третьих.
я бы сделал внутри функции onEnterFrame и в нем бы увиличивал альфу...

ryudzaki
26.08.2009, 15:09
интервал времени равныы 500 мс это слишком мало чтобы успеть убрать прозрачность.
Этот интервал я варьировал, но просто сам принцип у меня не получается

alexcon314
26.08.2009, 15:12
Ну вот так, к примеру:
function fade_in() {
clipToAnimate._alpha += 10;
if (clipToAnimate._alpha >= 100) {
_root.onEnterFrame = standby;
}
}
function standby() {
trace(clipToAnimate.delay);
clipToAnimate.delay -= 1;
if (clipToAnimate.delay < 0) {
_root.onEnterFrame = fade_out;
}
}
function fade_out() {
clipToAnimate._alpha -= 10;
if (clipToAnimate._alpha <= 0) {
_root.onEnterFrame = null;
attachRandomClip();
}
}
function attachRandomClip() {
var num = Math.ceil(Math.random() * 5 + 1);
var mc = _root.attachMovie("clip" + num, "clipToAnimate", 1000, {_x:Stage.width / 2, _y:Stage.height / 2, _alpha:0, delay:100});
_root.onEnterFrame = fade_in;
}
attachRandomClip();

Dezar
26.08.2009, 15:12
что конкретно не получается?
по сути код..почти верный)))

ryudzaki
26.08.2009, 15:30
можно ли сделать, чтобы у исчезающего клипа к примеру убывающая альфа была 20 или 50, а у появляющегося следующего нарастающая альфа была к примеру такого же значения????

Добавлено через 1 минуту
что конкретно не получается?
спасибо огромное, все получилось за исключением вопроса, стоящего выше

Dezar
26.08.2009, 15:34
я не совсем понял значение фразы.
то есть чтобы она убывала до 20 или 50?
можно.поставить проверку и все.
или чтоб она убывала на 20 или 50?это тож можно..
создав переменную, которая будет принимать то или иное значение..а последующии мувик будет брать эту переменную,после чего снова заменит значение

ryudzaki
26.08.2009, 15:42
Попробую схематично:
время: n сек n+1 сек
1клип: альфа 100------50------0
2клип: альфа 0---------50----100

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

Dezar
26.08.2009, 15:47
ааа.
так это еще проще)
в начале цикла надо обявить..что клип1 альфа равен 100
а клип 2 альфа ноль.
далее создает переменную которая и будет значение альфа(какои надо)
и это значение отнимаем от альфы клипа 1
а к альфе клипа 2 добавляем))
вроде так

ryudzaki
26.08.2009, 15:51
если не трудно, плиз, можете на примере!

Добавлено через 35 секунд
и где именно цикл создавать?

Dezar
26.08.2009, 16:00
может код и выглядит криво..но я такои код использовал для фотогаллерей.работает быстро.да и простои он.


slot = 1;
_root.attachMovie("re", "clip1", slot);//создаем первый клип
function attachRandomClip() {
slot++;
_root.attachMovie("re" + num, "clip2", slot);
clip2._alpha = 0;
clip1._alpha = 100;
alpha_set = 1;
onEnterFrame = function(){
clip2._alpha += alpha_set;
clip1._alpha -= alpha_set;
if (clip2._alpha >= 100 )
{
delete onEnterFrame;
}
}
}
var intervalID:Number = setInterval(attachRandomClip,random(4000)+500);


чтот типо такого)))

ryudzaki
26.08.2009, 16:19
что то никак не получается:(

Dezar
26.08.2009, 16:21
что не получаается*?мне просто проверить код сложно)так как я не у своего ПК.
но по идее ошибок быть не должно.

ryudzaki
26.08.2009, 16:33
В предидущем скрипте c fade in, fade out _root убрал и заработало как часы.
А тут ни туда, ни сюда. И не могу понять, к чему введен slot. Сейчас вовсе не подгружает клип в сцену :(

Dezar
26.08.2009, 16:35
slot это номер слоя)
ну поставьте трейс например в цикл.
пусть выводит значения альфа для обоих мувиков.если он работает и все выдает.значит проблемы с импортом.может гдет ковычек нет))или рута

ryudzaki
26.08.2009, 16:43
Ясно. Разобрался. Заработало, только фейдит 1 раз перый клип и все. Остальные просто сменяют друг друга.
slot = 1;
var num = Math.ceil(Math.random() * 14 + 1);
attachMovie("re", "clip1", slot);//создаем первый клип

function attachRandomClip() {
slot++;
var num = Math.ceil(Math.random() * 14 + 1);
attachMovie("re" + num, "clip2", slot);
clip2._alpha = 0;
clip1._alpha = 100;
alpha_set = 1;
clip1._x = 0;
clip1._y = 0;
clip2._x = 0;
clip2._y = 0;


onEnterFrame = function(){
clip2._alpha += alpha_set;
clip1._alpha -= alpha_set;
if (clip2._alpha >= 100 )
{
delete onEnterFrame;
}
}
}
var intervalID:Number = setInterval(attachRandomClip,random(4000)+500);

Добавлено через 57 секунд
Посмотрите, пожалуйста, что не так. Нужно, чтоб все друг друга фейдом сменяли

Dezar
26.08.2009, 16:45
дык добавь создание еще одного клипа в фугкцию...

ryudzaki
26.08.2009, 16:52
добавляю функцию и полностью пропадает альфа

Dezar
26.08.2009, 17:01
покажите код

ryudzaki
26.08.2009, 17:22
slot = 1;
var num = Math.ceil(Math.random() * 14 + 1);
attachMovie("re", "clip1", slot);//создаем первый клип

function attachRandomClip() {
slot++;
var num = Math.ceil(Math.random() * 14 + 1);
attachMovie("re" + num, "clip2", slot);

{clip2._alpha = 0;
clip1._alpha = 100;
alpha_set = 1;
clip1._x = 0;
clip1._y = 0;
clip2._x = 0;
clip2._y = 0;
}


onEnterFrame = function(){
attachMovie("re" + num, "clip", slot);
clip2._alpha += alpha_set;
clip1._alpha -= alpha_set;
if (clip2._alpha >= 100 )
{
delete onEnterFrame;
}
}
}
var intervalID:Number = setInterval(attachRandomClip,random(4000)+500);