Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   эффект дрожания... (http://www.flasher.ru/forum/showthread.php?t=68616)

Charly84 01.09.2005 01:32

эффект дрожания...
 
подскажите, как сделать эффект дрожания.... ;)
саму идею - дальше сам...

iNils 01.09.2005 01:52

1. делать программно смещение клипа случайное в разные стороны.
2. сделать внутри мувиклипа несколько кадров со смещением.

Charly84 01.09.2005 01:57

моежт поможешь исходничком? ;)

K.A.T.A.F.A.L.K.E.R 01.09.2005 02:40

Цитата:

Сообщение от iNils
1. делать программно смещение клипа случайное в разные стороны.
2. сделать внутри мувиклипа несколько кадров со смещением.

3. Задать массив со смещениями, да так чтоб суммарное смещение было равно нулю... А то если рандомом - один аллах знает почему у флеша не работает теория вероятности и почему абсолютно рандомные смещения заставляют мувик в итоге съехать х.з. куда :D

ffffff 01.09.2005 03:29

а помоему удобнее будет сделать прототип...

Бармалей 01.09.2005 11:14

Цитата:

Сообщение от k.a.t.a.f.a.l.k.e.r
3. задать массив со смещениями, да так чтоб суммарное смещение было равно нулю... а то если рандомом - один аллах знает почему у флеша не работает теория вероятности и почему абсолютно рандомные смещения заставляют мувик в итоге съехать х.з. куда :d

а что тебе мешает ограничения поставить на максимальные смещения?

Charly84 01.09.2005 12:00

люди, может хватит между собой обговаривать ньансы...подкиньте исходничек для эффетка дрожания... ;)

Cvazimodo 01.09.2005 12:09

Методом duplicateMovieClip() размножить основной клин на несколько копий. С оригинальным клипом дальше ничего не делать, а у копий:
1. Изменить _alpha (примерно от 10-40) - сам эффект дрожания;
2. На событие enterFrame повесить постоянное рандомное смещение (причем смещение прибавлять/вычитать с координатами оригинального клипа - так ничего никуда не съедет);
3. В какой-то момент у копий прописать их удаление (removeMovieClip())

ЗЫ: Ты ж просил идею, а "дальше сам"... Тут не только идею, но и псевдокод написали :))
Я бы набросал небольшой исходник, то там, где я сейчас работаю (основная работа) нельзя устанавливать доп. программы, в том числе и Flash (корпоративная безопасность).
.

iNils 01.09.2005 12:10

Цитата:

Сообщение от Charly84
подскажите, как сделать эффект дрожания....
саму идею - дальше сам...

Цитата:

Сообщение от Charly84
моежт поможешь исходничком? ;)

Не видите ли вы тут противоречия? :)

Charly84 01.09.2005 12:57

2 iNils

Теперь прошу исходник...
Я сам сделал эффект дрожания - но он что-то не очень реальный...


Может подкините исходник? ;)

Silense 01.09.2005 13:13

Создай любой мувик и
кадр 1
this._x=100
this._y=100
кадр 2
this._x=this._x+random(20)-10
this._y=this._y+random(20)-10
//интервал дрожания от -10 до +10 пкс

Charly84 02.09.2005 14:47

2 Silense

Большое спасибо... :)

zlodey538 02.09.2005 15:04

Цитата:

Сообщение от Charly84
2 iNils

Теперь прошу исходник...
Я сам сделал эффект дрожания - но он что-то не очень реальный...


Может подкините исходник? ;)

Для реальности надо затухание плавное сделать . В каждом ключевом кадре раскачку уменьшай, а последний ключевой кадр скопируй с первого :) Это теория, я так не делал, но мне кажется логически будет так. Я сам недавно начал флэшем заниматься

Штрек 03.09.2005 05:09

Дрожите на здоровье.........

MovieClip.prototype.drog = function(amlituda, speed) {
clearInterval(idd);
var x = this._x;
var y = this._y;
var n = 0;
var idd = setInterval(function (amlituda, trg) {
if (n%2 == 0) {
trg._x += 2*amlituda*Math.random()-amlituda;
trg._y += 2*amlituda*Math.random()-amlituda;
} else {
trg._x = x;
trg._y = y;
}
n++;
updateAfterEvent();
}, 1000/speed, amlituda, this);
};
mc.drog(2, 100);

Штрек 03.09.2005 05:29

Предвосхищая вопрос -
а как остановить? -
чуть подправить -
MovieClip.prototype.drog = function(amlituda, speed) {
if (amlituda == undefined && speed == undefined) {
clearInterval(this.idd);
return;
}
clearInterval(this.idd);
var x = this._x;
var y = this._y;
var n = 0;
this.idd = setInterval(function (amlituda, trg) {
if (n%2 == 0) {
trg._x += 2*amlituda*Math.random()-amlituda;
trg._y += 2*amlituda*Math.random()-amlituda;
} else {
trg._x = x;
trg._y = y;
}
n++;
updateAfterEvent();
}, 1000/speed, amlituda, this);
};
mc.drog(2, 100);
//останавливаем
knopka.onPress = function() {
mc.drog();
};


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

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