Форум 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)
-   -   Анимация: movie+alpha+blur все в AS 2.0. (http://www.flasher.ru/forum/showthread.php?t=112576)

Wolsh 06.06.2008 16:22

Апгрейд кода)))
Код:

import flash.filters.BlurFilter;
// исходные настройки
var blurmax:Number = 30;
var xmax:Number = 300;
var xmin:Number = 100;
// константы
var way:Number = xmax-xmin
// поехали
mc._x = xmin;
mc.onEnterFrame = function() {
    this._x += 1;
    if (this._x>=xmax) this._x = xmin;
    this._alpha = 3*(way/2 - Math.abs(way/2-this._x+xmin));
    blurnow = blurmax - (way/2-Math.abs(way/2-this._x+xmin))/2;
    this.filters = [new BlurFilter(blurnow, blurnow, 3)];
};


blacks 09.06.2008 17:39

Сегодня сел за разбор скрипта и приаттачивания его к проекту.

Alex_beginner
Огромное спасибо за поддержку и помощь!
Думаю Ваш пример сослужит добрую помощь еще не оди раз!

iNils
к сожалению классы которые аттачатся к скрипту добавили ему веса:
выходной swf весит за 2кб. Остальные примеры в пределах 400-500байт

Wolsh
Спасибо за ваш пример в посте/посте:
http://www.flasher.ru/forum/showpost...0&postcount=41
- он получился по выходу swf самым маленьким.

Хотя забавная штука - сам ролик уменьшился всего на 1кб :eek:

Ню так суть не в этом.
Вот подумал что хорошоб добавить анимацию цвета для данного мувика.

Сценарий:
1 = 2 секунды - из красного в белый
2 = 2 секунды - сохраняем белый
3 = 2 секунды - из белого в красный

Полазил в зарубежных сайтах и на данном форуме
Много примеров с
Код:

import flash.geom.ColorTransform;
import flash.geom.Transform;

но нуно сделать без этого :(

Смотрел сылочку:
http://etcs.ru/blog/as2/ru/etcs/draw/simplegradient/
(ru.etcs.draw.SimpleGradient v1.1.1)
- но там мне кажеться вывод будет тоже большим
(:rolleyes: еще не смотрел-проверял.. но классы думаю что-то да весят)

Плюсом на форуме нашел пост от wvxvw
(http://www.flasher.ru/forum/showpost...81&postcount=9)
Код:

var _null:Number = 0x000000;
_root.onEnterFrame = function() {
        _null += 0x01;
        trace(_null);
}

- вроде жто то что должно подойти под Ваш пример...
- но к сожалению мои ламерские подвиги в флеше пока не растут :rolleyes:

Вот хотел у Вас попросить помощи.
Заранее большое СПАСИБО!

iNils 09.06.2008 17:44

Цитата:

Сообщение от blacks (Сообщение 744701)
iNils
к сожалению классы которые аттачатся к скрипту добавили ему веса:
выходной swf весит за 2кб. Остальные примеры в пределах 400-500байт

Если у вас баннер, то это конечно критично, в иных случаях 2кб роли не играют.

Wolsh 09.06.2008 19:15

Хм.... Это очень простое цветовое преобразование. Для частного случая:
Код:

import flash.filters.BlurFilter;
// исходные настройки
var blurmax:Number = 30;
var xmax:Number = 300;
var xmin:Number = 100;
// константы
var col:Color = new Color(mc);
var way:Number = xmax-xmin
// поехали
mc._x = xmin;
mc.onEnterFrame = function() {
    this._x += 1;
    if (this._x>=xmax) this._x = xmin;
    var delt = way/2 - Math.abs(way/2-this._x+xmin)
    this._alpha = delt*3;
    blurnow = blurmax - delt/2;
    this.filters = [new BlurFilter(blurnow, blurnow, 3)];
    var temp:Number = Math.min(255, Math.floor(this._alpha));
    col.setRGB(255 << 16 | temp << 8 | temp)
};

Попутно выяснилось, что все остальное тоже для частного случая)))) Прошу прощения у мэтров, давших универсальное решение.

blacks 09.06.2008 21:22

Цитата:

Сообщение от iNils
Если у вас баннер, то это конечно критично, в иных случаях 2кб роли не играют.

Согласен...
У меня вот меню на флеше в шапке сайта - нужно сделать красиво и маленько по размеру :rolleyes:

Цитата:

Сообщение от Wolsh
Попутно выяснилось, что все остальное тоже для частного случая)))) Прошу прощения у мэтров, давших универсальное решение.

- Спасибо! Хотя еще не удалось проверить :rolleyes:
- Только вот не понимаю за "прощение" - что-то не то с кодом?

iNils 09.06.2008 21:29

Цитата:

Сообщение от blacks (Сообщение 744736)
Согласен...
У меня вот меню на флеше в шапке сайта - нужно сделать красиво и маленько по размеру :rolleyes:

У меня аватар весит 3кб, а у Волша все 16. Посмотрите на размер ваших картинок на сайте и сам html.

Wolsh 09.06.2008 21:56

Цитата:

что-то не то с кодом?
Этот сокращенный код нормально работает при тех размерах что там вбиты и с максимальным блюром 30. Для других случаев придется подбирать множители-делители))) Я обманулся насчет универсальности полученной формулы. К тому же там сделаны непростительные допущения - типа что альфа не может быть больше ста (точнее может но визуально не выражается) а блюр не может быть меньше ноля. В общем все это проявится, если захочется меньше блюра или длиннее путь.
зЫ У меня аватар в 32 битном пинге, а у iNilsa - джипег с хитрым синим фоном (самый неискажаемый в джипеге цвет, первые биты)

blacks 10.06.2008 00:56

Цитата:

Сообщение от iNils (Сообщение 744740)
У меня аватар весит 3кб, а у Волша все 16. Посмотрите на размер ваших картинок на сайте и сам html.

:)
Борьба аватрками :yahoo:
Сайт и картики да... местами большие. Но нуно постепенно править, уменьшать, совершенствоваться. Спасибо!

Цитата:

Сообщение от Wolsh
Этот сокращенный код нормально работает при тех размерах что там вбиты и с максимальным блюром 30. Для других случаев придется подбирать множители-делители))) Я обманулся насчет универсальности полученной формулы. К тому же там сделаны непростительные допущения - типа что альфа не может быть больше ста (точнее может но визуально не выражается) а блюр не может быть меньше ноля. В общем все это проявится, если захочется меньше блюра или длиннее путь.
зЫ У меня аватар в 32 битном пинге, а у iNilsa - джипег с хитрым синим фоном (самый неискажаемый в джипеге цвет, первые биты)

Блюр сейчас у меня стоит 10... максимум будет 20.
Расстояние и скорость уменьшил.
Вообщем в таком виде живу :rolleyes:

Про хитрый JPEG не знал - наверное это азы?
(сразу захотелось использовать "синенький" в дизайне с большими картинками):rolleyes:

blacks 10.06.2008 02:01

Цитата:

Сообщение от Wolsh (Сообщение 744720)
Хм.... Это очень простое цветовое преобразование. Для частного случая:
Код:

// константы
var col:Color = new Color(mc);
// поехали
    var temp:Number = Math.min(255, Math.floor(this._alpha));
    col.setRGB(255 << 16 | temp << 8 | temp)
};

Попутно выяснилось, что все остальное тоже для частного случая)))) Прошу прощения у мэтров, давших универсальное решение.

Вот сижу разбираю ваш пример и никак не могу понять:
- как задавать/изменять цвета?
:wacko:

Пытаюсь сделать:
#663399 -> whie -> #663399

Wolsh 10.06.2008 08:41

blacks, Вы запутались в своих желаниях! С одной стороны, Вы хотите все оптимизировать до одной строчки, с другой стороны Вам надо чтоб этот код был универсальным. Универсальный код уже написан - это классы. Поверьте, еслиб можно было универсальность както еще оптимизировать, наши глубокоуважаемые мэтры сделали бы это. Но увы.
Частный код всегда короче и производительней, так как содержит только необходимые в конкретном случае расчеты. Например, для преобразования из красного 0хff0000 в белый 0xffffff надо всеголишь поднимать значения зеленого и синего с 0 до 255, причем на одинаковую величину. Но для преобразования произвольного цвета в другой произвольный цвет понадобится код раз в десять увесистей.
Я бы рекомендовал такой подход в Вашем случае - создать "карту преобразований"
Звучит страшно, но я имею в виду совсем простую вещь - Вам надо создать преобразование некоторой переменной (назовем ее дельта) в известном Вам диапазоне, например от 0 до 100, и все остальные преобразования (блюра, альфы, цвета и т.п.) производить от величины этой переменной. Напр. когда дельта 100 - блюр 0, альфа 100 цвет 0xffffff, а когда дельта 0 - блюр 10, альфа 0, цвет 0x663399.
Таким образом, сначала создаете формулу, преобразующую позицию Х Вашего мувика в величину дельта, потом считает остальные параметры.

blacks 10.06.2008 11:30

Ох :)
Нет это не по мне - к сожалению программирование для меня сложная штука.
Составление формул, циклов, переменных это что-то сверхестественное :)
Мнеб что попроще
Поэтому в дизайне и сижу ;)

iNils 10.06.2008 13:37

Если брать за основу мой код, то это будет выглядить так (альфу пока закомментировал):
Код:

import ru.inils.transitions.Counter;
import ru.inils.framework.Delegate;
import flash.filters.BlurFilter;
////
//// общее число кадров
var countFrame:Number = 220;
//// скорость в кадре
var speedofFrame:Number = 1;
//// движки
var count0:Counter = new Counter (0, 100, (countFrame / 3) >> 0, 0);
var count1:Counter = new Counter (0, 100, (countFrame / 3) >> 0, (countFrame / 3) >> 0);
var count2:Counter = new Counter (100, 0, (countFrame / 3) >> 0 + 1, ((countFrame * 2 / 3) >> 0) + 1);
//// события движка
count0.onCountChanged = Delegate.create (this, move, [0, count0]);
count1.onCountChanged = Delegate.create (this, move, [1, count1]);
count2.onCountChanged = Delegate.create (this, move, [2, count2]);
var color:Color = new Color (mc);
////
function rgb (i:Number):Number {
        var m:Number = (100 - i) / 100;
        var r:Number = 0xFF - (0xFF - 0x66) * m;
        var g:Number = 0xFF - (0xFF - 0x33) * m;
        var b:Number = 0xFF - (0xFF - 0x99) * m;
        return r << 16 | g << 8 | b;
}
function mode (i:Number):Void {
        var blur:Number = 10 - count.value / 10;
        var filter:BlurFilter = new BlurFilter (blur, blur, 3);
        mc.filters = [filter];
        //mc._alpha = i;
        color.setRGB (rgb (i));
}
function move (id:Number, count:Counter) {
        mc._x += speedofFrame;
        switch (id) {
        case 0 :
                mode (count.value);
                break;
        case 1 :
                break;
        case 2 :
                mode (count.value);
                break;
        }
}
color.setRGB (0x663399);
//mc._alpha = 0;


blacks 10.06.2008 16:26

Цитата:

Сообщение от iNils (Сообщение 744835)
Если брать за основу мой код, то это будет выглядить так (альфу пока закомментировал):

Спасибо :rolleyes:
Но 2кб для меня критично :rolleyes:

blacks 10.06.2008 16:29

Цитата:

Сообщение от Wolsh (Сообщение 744797)
blacks,Но для преобразования произвольного цвета в другой произвольный цвет понадобится код раз в десять увесистей.

Дя вот тут уже и задумался...
Стоит ли тогда делать такой большой код?
Тем более он будет продублирован 6-9 раз...

По поводу сценария... наверно я визуал - понимаю что добавить или отнять только когда вижу :)


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

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