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

ryudzaki 26.08.2009 14:55

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

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

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

Код AS1/AS2:

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 раз перый клип и все. Остальные просто сменяют друг друга.
Код AS1/AS2:

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

Код AS1/AS2:

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);



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

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