Форум 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)
-   -   Рандомное движение и альфа 3х мувиков (http://www.flasher.ru/forum/showthread.php?t=112351)

blacks 25.05.2008 03:03

Рандомное движение и альфа 3х мувиков
 
Привет всем!

Задачка и условия задачки ;)

есть 3 мувика - текст.
они вставлены в мувик text_mc, каждый в своем слое.

очень нужен небольшой скрипт который:
рандомно плавно передвигал мувики-объекты в облости 200х200пикс.
рандомно плавно увеличивал а потом уменьшал видимость мувиков-объектов.

- должен получиться эффект переплитающихся, появляющихся и исчезающих 3х слов.

... возможно еще добавить блюр эффект.. но думаю если будет пример то справлюсь.

Код:

_root.text01_mc._x = random(2)+470;
Код:

text01_mc.onEnterFrame=function(){
if(jtext01_mc._alpha<100){
text01_mc._alpha+=random(27)+75;
} else{
//delete this.onEnterFrame;
}
}

- данные коды пока не мне не очень помогли...

.... помоги скриптиком.. :rolleyes:
Всем откликнувшимся большое спасибо!

blacks 25.05.2008 07:47

Вложений: 3
Вот нашел в инете один пример-исходник:
rnd_movie_original.fla

Изменил его:
rnd_movie_text.fla
- но после того как оригинал переместил в мувик все стало очень быстро дергатьсяв.

Вот пример того что хочеться сделать
rnd_movie_demo.swf
(пример собран в анимации "методом ручек", количество кадров увеличено для скорости отображения)


Также нашел нижеследующие варианты-части от которых наверно стоит отталкиваться.
Но.. ничего толком в них не понимаю.
Возможно имея приведенный выше пример и коды ниже вам будет легче помочь мне.
Ребятки... очень нужно уменьшить вес ролика переделав все в рандом помогите плиз :clap: !!

Код 1:
Код:

var arraySpeed:Array = [5, 10, 15];
var speed:Number = arraySpeed[Math.floor (Math.random () * 3)];
stars.onEnterFrame = function () {
        this._x += speed;
};

Код 2:
Код:

var w:Number =Stage.width;
var h:Number = Stage.height;

var dx:Number = 5;
var dy:Number = 5;


function move():Void{
    mc.onEnterFrame = function(){
          if(_x>(w-_width/2) || _x<_width/2){
              dx *= -1;
              //проиграть звук
          }

          if(_y>(h-_height/2) || _y<_height/2){
              dy *= -1;
              //проиграть звук
          }
          _x += dx;
          _y += dy;
    }
}

move();


Код 3:
Код:

function randAlpha(min:Number, max:Number):Number {
    var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
    return randomNum;
}

function randMove(xPos:Number, yPos:Number):Number {
 
  _global.xPosition;
  _global.yPosition;
 
  a=randAlpha(-2,2);
  b=randAlpha(-2,2);
 
  xPosition=xPos+a;
  yPosition=yPos+b;

  xPosition+=a;
  yPosition+=b;
}

Код 4:
Код:

mc.onEnterFrame = function zzz(){
mc._x = random(200-mc._width);
mc._alpha = random(50)+50;
}

/// - плюс нужно както добавить нижеследующие

function zzz (параметры перемещения) {
...
описание функции
...
}
setInterval (zzz,интервал вызова функции, параметры перемещения);


Psycho Tiger 25.05.2008 11:01

Есть такой класс - Tween. (flash.transitions.Tween)
Почитать о нем можно в хэлпе. Там же есть пример, как заставить шарик переместиться из 1 позиции в другую. Ага!!!
Далее находим хэлп по событию onMotionFinished
Как только движение заканчивается, вызываем новое движение и повторяем все по кругу. Можно пользоваться setInterval и делать метод continueTo();
Сделали, что надписи мечуться. Теперь размер и альфа?
Делаем аналогичные оперции с размером. Причем, чем больше мы увеличиваем размер, тем больше увеличиваем альфу. И наоборот. Добавляем блюр и вуаля - наша мечта воплотилась в жизнь!

blacks 25.05.2008 15:40

Цитата:

Сообщение от Psycho Tiger (Сообщение 741412)
Есть такой класс - Tween. (flash.transitions.Tween)
Почитать о нем можно в хэлпе. Там же есть пример, как заставить шарик переместиться из 1 позиции в другую. Ага!!!
Далее находим хэлп по событию onMotionFinished
Как только движение заканчивается, вызываем новое движение и повторяем все по кругу. Можно пользоваться setInterval и делать метод continueTo();
Сделали, что надписи мечуться. Теперь размер и альфа?
Делаем аналогичные оперции с размером. Причем, чем больше мы увеличиваем размер, тем больше увеличиваем альфу. И наоборот. Добавляем блюр и вуаля - наша мечта воплотилась в жизнь!

Примерно понял как...
Но вот с setInterval еще не знаком.

Главное: в какой-то статье читал что применение класса flash.transitions.Tween увеличивает ролик на 5кб... мне это немного критично - нужно сделать все как можно меньше по размеру.

А приведенный пример никак не получиться до ума довести?:rolleyes:

Wolsh 25.05.2008 21:23

Вложений: 1
Вот Вам примерчик. Попытки прикрутить блюр привели к краху Флэш CS3 ))))
Думаю, количество необходимых рассчетов при плавающих альфах, блюре и позициях слегка зашкаливает. Ну и руки у меня не всегда оттуда растут)))
Если прикрутите, будет Вам счастье.

blacks 26.05.2008 05:14

Цитата:

Сообщение от Wolsh (Сообщение 741511)
Вот Вам примерчик.

:eek::yahoo:
ОГОРОМНОЕ спасибо! Отлично!

Вот немного попытался доработать код.. но что-то не получается:
1. блю вообще не работает.
2. размер меняется хаотично... - как сделать чтоб рандомный размер мувиков менялся пропорционально (ширина и высота)

СПАСИБО!

Код:

import flash.filters.BlurFilter;

xmin = 0
xmax = 150
ymin = 0
ymax = 40
//alpha
amin = 100
amax = 100
// scale
smin = 100
smax = 100
tmin = 90
tmax = 100
//blur
bmin = 0
bmax = 100

t1_mc.complet = t2_mc.complet = t3_mc.complet = true
//
generateCell (t1_mc);
generateCell (t2_mc);
generateCell (t3_mc);
//
t1_mc.onEnterFrame = t2_mc.onEnterFrame = t3_mc.onEnterFrame = function () {
        this.complet = Math.ceil(this._x) == this.xcell && Math.ceil(this._y) == this.ycell;
        this.complet ? generateCell(this) : moveIt(this);
};
//
//t1_mc.filters = [new BlurFilter(2,2,2)];
//t2_mc.filters = [new BlurFilter(2,2,2)];
//t3_mc.filters = [new BlurFilter(2,2,2)];


//
function moveIt (mc:MovieClip) {
        mc._x = mc._x + (mc.xcell - mc._x)/20
        mc._y = mc._y + (mc.ycell - mc._y)/20
        mc._alpha = mc._alpha + (mc.acell - mc._alpha)/16
       
_yscale = _xscale;
        mc._yscale = mc._yscale + (mc.scell - mc._yscale)/20
        mc._xscale = mc._xscale + (mc.tcell - mc._xscale)/20

filter.blurY = filter.blurX;
mc.blurY = mc.blurY + (mc.bcell - mc.blurY)/4

};
//
function generateCell (target:MovieClip) {
        target.acell = Math.random()*(amax-target._alpha - amin)+ amin;
        target.bcell = Math.random()*(bmax-target.blurY - bmin)+ bmin;

        xxx = Math.random()*(xmax-target._width - xmin)+ xmin;
        yyy = Math.random()*(ymax-target._height - ymin)+ ymin;
        target.xcell = Math.ceil(xxx);
        target.ycell = Math.ceil(yyy);

xxx = Math.random()*(smax-target._width - smin)+ smin;
yyy = Math.random()*(tmax-target._height - tmin)+ tmin;
target.scell = Math.ceil(xxx);
target.tcell = Math.ceil(yyy);

       
};

----------------------
Добавил позже: анимация блюра и размеров должна быть плавной и пропорциональной.

Wolsh 29.05.2008 20:28

Вложений: 1
Ну, должна-не должна, уж как получилось))))
p.S. Будете переделывать - сохраняйтесь всё время, флэш вылетает постоянно при тестировании. После того как добавил удаление фильтра, стало значительно стабильнее, но пару раз таки свернулся))))


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

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