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

alexx25 28.11.2007 12:02

эффект воды
 
Поможите люди добрые!
Нужен реальный эффект воды, чтоб - как на самом деле!!!
Нашел скрипт (спасибо чуваку, который его написал):

Код:

import flash.display.*;
import flash.geom.*;
import flash.filters.*;
myBitmap = new BitmapData(390,293,false,0);
pt = new Point(0,0);
mpoint = new Point(0,0);
myDispl = new DisplacementMapFilter(myBitmap, mpoint,1,2,10,50);
water_mc.myList = new Array();
water_mc.myList.push(myDispl);
water_mc.filters = water_mc.myList;
i = 1;
this.onEnterFrame = function()
{
filterList = water_mc.filters;
offset = new Array();
offset[1] = new Object();
offset[1].x = i;
offset[1].y = i/8;
myBitmap.perlinNoise(45,5,3,50,true,false, 7,true,offset);
filterList.mapBitmap = myBitmap;
water_mc.filters = filterList;
i++;
}

Вопрос:
Можно ли его как-нибудь изменить, чтоб процессор не тормозил (при тестировании такого скрипта, процессор загружен на 95-100%).?
Возможно ли это???

aQuestion 28.11.2007 12:12

у меня при 170х170/12фпс проц тянет 27% плюс минус. по мне весьма неплохо.

alexx25 28.11.2007 12:17

Нет возможности уменьшить размер битмапа.
Необходимо изменение скрипта!

chingachgoog 28.11.2007 12:26

Надо карту смещений для DisplacementMapFilter (которая сейчас генерится perlinNoise, что ресурсоемко) нарисовать руками.

alexx25 28.11.2007 13:01

Помогите, объясеите пжста что такое DisplacementMapFilter, и с чем его едят!?
Как ее надо рисовать и исправить код?

chingachgoog 28.11.2007 13:43

Не так это просто.
http://flasher.ru/forum/showthread.php?t=100674&page=4

alexx25 28.11.2007 14:28

Огромное спасибо!
Но только я так и не смог модернизировать код.
Если есть возможность - скинь пожалуйста ссылку на исходник (реалистичная вода) с подобным кодом!

TERRORist 28.11.2007 17:58

да видео сделай и не мучайся

Spot 01.12.2007 00:16

**Ошибка** Сцена=Сцена 1, слой=Слой 1, кадр=1:Строка 1: Statement must appear within on/onClipEvent handler
import flash.display.*;

**Ошибка** Сцена=Сцена 1, слой=Слой 1, кадр=1:Строка 2: Statement must appear within on/onClipEvent handler
import flash.geom.*;

**Ошибка** Сцена=Сцена 1, слой=Слой 1, кадр=1:Строка 3: Statement must appear within on/onClipEvent handler
import flash.filters.*;

**Ошибка** Сцена=Сцена 1, слой=Слой 1, кадр=1:Строка 4: Statement must appear within on/onClipEvent handler
myBitmap = new BitmapData(390,293,false,0);

**Ошибка** Сцена=Сцена 1, слой=Слой 1, кадр=1:Строка 5: Statement must appear within on/onClipEvent handler
pt = new Point(0,0);

**Ошибка** Сцена=Сцена 1, слой=Слой 1, кадр=1:Строка 6: Statement must appear within on/onClipEvent handler
mpoint = new Point(0,0);

**Ошибка** Сцена=Сцена 1, слой=Слой 1, кадр=1:Строка 7: Statement must appear within on/onClipEvent handler
myDispl = new DisplacementMapFilter(myBitmap, mpoint,1,2,10,50);

**Ошибка** Сцена=Сцена 1, слой=Слой 1, кадр=1:Строка 8: Statement must appear within on/onClipEvent handler
water_mc.myList = new Array();

**Ошибка** Сцена=Сцена 1, слой=Слой 1, кадр=1:Строка 9: Statement must appear within on/onClipEvent handler
water_mc.myList.push(myDispl);

**Ошибка** Сцена=Сцена 1, слой=Слой 1, кадр=1:Строка 10: Statement must appear within on/onClipEvent handler
water_mc.filters = water_mc.myList;

**Ошибка** Сцена=Сцена 1, слой=Слой 1, кадр=1:Строка 11: Statement must appear within on/onClipEvent handler
i = 1;

**Ошибка** Сцена=Сцена 1, слой=Слой 1, кадр=1:Строка 12: Statement must appear within on/onClipEvent handler
this.onEnterFrame = function()

Общее количество ошибок ActionScript: 12 Сообщенные ошибки: 12

ну как нравиться

iNils 01.12.2007 00:20

Код надо в кадр помещать, а не на клип.

B0Bka 01.12.2007 02:28

Вложений: 1
alexx25 вот тебе мое извращение :victory: вода это не всегда вода

Код:

import flash.display.BitmapData
import flash.filters.DisplacementMapFilter
import flash.geom.Point
noise = new BitmapData(830, 174, false, 0x000000);
_root.attachBitmap(noise, 1);
_root.attachMovie("water", "water", 2);

cx = 0;
cy = 0;
seed = random(Number.MAX_VALUE);

t_i = 0;
directn = 1;
onEnterFrame = function() {
        if (directn == 1 && t_i < 800) t_i++;
        else {
                t_i = 0;
        }

        trace(t_i);
        update(t_i, 0);
}

function update(x, y){
        off1 = new Point(x, y);
        noise.perlinNoise(50, 20, 1, seed, true, true, 1 | 2, false, [off1]);
        water.filters = [new DisplacementMapFilter(noise, new Point(0,0), 1, 2, 10, 10)];
}

полчучается такой эффект что в аттаче

Котяра 01.12.2007 13:08

Тормозит жуть.. у меня C2800 сразу подлетает загрузка до 100%

chingachgoog 01.12.2007 13:41

Это та же дыня только сбоку: perlinNoise генерит карту смещений для DisplacementMapFilter. Отсюда и ожидаемая загрузка процессора.

B0Bka 01.12.2007 14:51

ну тогда могу предложить другой вариант как некторые флэшеры делают бегущие облака: длииииинная полоска движущеся воды и медленно ее двигаем :)

vapes 01.12.2007 15:11

Вот мой вариант сего чуда.
http://vapes.na.by/blog/index.php?en...y071009-112359

джонатан 20.05.2008 01:49

Вот у меня тоже такая же беда, процессор адски загружается, а мне в флеш сайт эффект нужен, а там кроме этого тоже эффекты имеются... Прям не знаю, что и делать...

Kuruki 20.05.2008 01:57

http://silin.fatal.ru/AS2/ripple/ripple.rar

джонатан 21.05.2008 22:31

Вот тут вот классно вода сделана, и проц не жрет совсем почти... Интересно как?

Wolsh 22.05.2008 02:19

покадровая анимация. по-русски: gif. ))) только большой и из джипегов)))
Это чтото типа Particle Illusion использовано для генерации серии кадров.

джонатан 22.05.2008 11:39

Wolsh
Ну да! Я тоже так подумал, весит она уж больно много просто.

Kuruki
У Вас прикольный вариант конечно, но все повынесено в отдельные as файлы, и я прям затрудняюсь разобраться где что, надо еще поковырять...

Kuruki 22.05.2008 21:01

Вариант не мой, а silin'a. Эффект воды - это класс Ripple. А класс InstanceManager создает мувиклип (и не только) и делает его экземпляром указанного класса (Ripple).

DJ_Baton 22.05.2008 21:24

четкий скрипт !!!

silin 22.05.2008 22:06

Вложений: 1
perlinNoise можно посчитать один раз, а потом тока двигать карту..

джонатан 22.05.2008 22:55

Цитата:

Сообщение от silin (Сообщение 740791)
perlinNoise можно посчитать один раз, а потом тока двигать карту..

Ну тут като не очень смотрится... Да и когда я исходник открываю, то не работает. Ошибку даже выдает:

The name of this class, 'Wobble', conflicts with the name of another class that was loaded, 'Wobble'.

silin 22.05.2008 23:43

>>Ну тут като не очень смотрится..
тогда присоединяюсь к TERRORist'у: делай видео..

>>The name of this class, 'Wobble', conflicts with..
в меню: Control-delete ASO files

джонатан 23.05.2008 02:18

silin
>Видио слишком много места занимает, а мне дорог каждый кб. Сайт в провиции будет работать. А там все все еще любят DialUp

А как можно замедлить это, не трогая fps??? При 31 как я уже говорил не очень смотриться, но я уменьшил до 21, и по моему очень даже не плохо стало...
И еще можно ли уменьшить ширину "полос"?

Сложный код слишком для моего уровня :(

silin 23.05.2008 18:30

Код:

var wobble:Wobble = new Wobble(picMC._width, picMC._height);
wobble.vaweAmplitude=128;//размах колебаний
wobble.vaweLength=8;//ширина
function onEnterFrame()
{
        wobble.shift();
        picMC.filters = [wobble.filter];
}

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

джонатан 23.05.2008 19:02

Да да да! Артефакты я уже запрятал :) Спасибо!

Я вот только не могу понять в кокую сторону колебания происходят???
Вродебы как влево вправо, но местами кажется что и снизу вверх...
Можно какнибудь сделать, чтобы снизу частота колебаний была выше чем сверху?


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

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