Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 09.11.2006, 00:58
wonderwhy вне форума Посмотреть профиль Отправить личное сообщение для wonderwhy Найти все сообщения от wonderwhy
  № 11  
Ответить с цитированием
wonderwhy
 
Аватар для wonderwhy

Регистрация: Sep 2005
Сообщений: 30
Цитата:
Сообщение от iNils
Посмотрел на матрице. Так это проявляется, так как динамический диапазон уже. На ЭЛТ это еле заметно, и то есть вглядываться. Но и фотошоп тоже дает неравномерность, правда другую.
Да я проверял в Photoshop. Там это видно но довольно редко и не так сильно. Я вот обнаружил 2 способа как с этим бороться если заливка пиксельная. Один это использование полутонов между 2 цветами. Тоесть не 2 а 4 цвета. Причём 2 центральных немного отклоняются от исходных. Немного помогает но может привести к радужности. Его можно и во Flash применить что и попробую сделать попозже. Второй вариант это смешивание. Тоесть считать 4 пикселя за один и в случае нехватки цветов для полного отображения смешивать в нём цвета. Например по горизонтали меньший а по вертикали больший. Способ хорошо но даёт зернистость. Тоесть линий нет но есть шершавость.
Кстати проводи еще несколько тестирований. Жёстко пробил в опциях видеокарты максимальный Antialiasing и Anisotropic filtering. Так вот эти края стали ощутимо сглаженей но всёравно заметно.
И еще кое что интересное. В результате тестирований у меня получились очень сильные тормоза и я увидел как Flash рисует градиенты. Очень забавно. Сначала появляется цельная область закрашенная средним цветом между крайними. Далее она разбивается на 2. Там этот процесс повторяется для новых 2 областей. Очень забавно выглядело. Этакий такой переход от целого цвета к ребристому переходящему в градиент. На сколько я понимаю по этому в Flash эти границы и видны лучше чем в Photoshop.
Вообще то меня бы не сильно беспокоило то что он такой. Можно подобрать такие цвета что это не будет заметно. Но дело в том что это делается динамически. Есть один цвет. Из него получаю 2 цвета. Один потемнее другой посветлее. Это и есть градиент. Причем далее это дело анимируется так что эта рамка плавно всплывает. В результате во время анимации эти рёбра видны намного лучше Позже я сделаю пример того о чем говорю что бы народ потестил у кого как это выглядеть.

Старый 09.11.2006, 17:34
alkonaft вне форума Посмотреть профиль Отправить личное сообщение для alkonaft Найти все сообщения от alkonaft
  № 12  
Ответить с цитированием
alkonaft
[+ 1.3 25.06.06]
[+1 25.06.06]
 
Аватар для alkonaft

Регистрация: Jan 2006
Сообщений: 144
Старый боян...
Эти линии видны даже на мониторов от маков, сам проверял.

Если бесит то юзайте ЭЛТ, которых в москве жутко мало.
__________________
Что за опен соурс без водки?

Старый 03.12.2006, 18:06
akerka вне форума Посмотреть профиль Отправить личное сообщение для akerka Найти все сообщения от akerka
  № 13  
Ответить с цитированием
akerka
 
Аватар для akerka

Регистрация: Apr 2006
Сообщений: 36
Люди реально правы. Это фишка LCD - неравномерные полутона. На самом деле градиенты рисуются правильно, и вопрос лишь в мониторе на котором просматривается проект.

Старый 04.12.2006, 01:31
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 14  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
akerka, если бы это были особенности LCD, то, если я сделаю скриншот и увеличу полученную картинку — я бы не увидел в тех же местах границ переходов. А я их вижу в тех же местах, что и при обычном просмотре — отсюда вывод, что монитор тут непричем.

Старый 04.12.2006, 19:18
wonderwhy вне форума Посмотреть профиль Отправить личное сообщение для wonderwhy Найти все сообщения от wonderwhy
  № 15  
Ответить с цитированием
wonderwhy
 
Аватар для wonderwhy

Регистрация: Sep 2005
Сообщений: 30
Цитата:
Сообщение от akerka
Люди реально правы. Это фишка LCD - неравномерные полутона. На самом деле градиенты рисуются правильно, и вопрос лишь в мониторе на котором просматривается проект.
Это не в мониторе дело. Дело в 32 битно цвете. Его не хватает на то что бы сделать градиент одного цвета гладким. 32 бита это по 8 бит на RGB + alpha канал. Получается есть только 8 бит скажем на синий. 8 бит это 255 цветов. Ширена flash в моём случае 1024. Получается в лучшем случае ширена полоски одного цвета 4 пикселя. Но это ещё мелочи по сравнению с моей проблемой. Я в следящем посте выложу кое что сделал не давно всё не как не мог добраться выложить тут. Дуло в том что у меня там слайды идут. И когда один слайд исчезает а другой появляется эти полоски рябить начинают а это уж совсем не выносимо

Старый 04.12.2006, 19:27
wonderwhy вне форума Посмотреть профиль Отправить личное сообщение для wonderwhy Найти все сообщения от wonderwhy
  № 16  
Ответить с цитированием
wonderwhy
 
Аватар для wonderwhy

Регистрация: Sep 2005
Сообщений: 30
Код:
import flash.geom.Matrix;
_root.NewTurn = function() {
	_root.d = 1;
	_root.createEmptyMovieClip("Fon", 0);
	_root.createEmptyMovieClip("fore", 1);
	col1 = random(255);
	col1 += random(255) << 8;
	col1 += random(255) << 16;
	col2 = random(255);
	col2 += random(255) << 8;
	col2 += random(255) << 16;
	Pad = 80;
	width = 800;
	height = 600;
	var Ramka:MovieClip = _root.Fon;
	Ramka._x = 0;
	Ramka._y = 0;
	Ramka.clear();
	Ramka.lineStyle(0, 0, 0);
	matrix = new Matrix();
	matrix.createGradientBox(width, height, Math.PI/4, 0, 0);
	Ramka.beginGradientFill("linear", [col1, col2], [100, 100], [0, 255], matrix);
	Ramka.moveTo(Pad, 0);
	Ramka.lineTo(width, 0);
	Ramka.lineTo(width, height-Pad);
	Ramka.curveTo(width, height, width-Pad, height);
	Ramka.lineTo(0, height);
	Ramka.lineTo(0, Pad);
	Ramka.curveTo(0, 0, Pad, 0);
	Ramka.endFill();
	var Ramka:MovieClip = _root.fore;
	Ramka._alpha = 0;
	Ramka._x = 50;
	Ramka._y = 50;
	width = 700;
	height = 500;
	col1 = random(255);
	col1 += random(255) << 8;
	col1 += random(255) << 16;
	col2 = random(255);
	col2 += random(255) << 8;
	col2 += random(255) << 16;
	Ramka.clear();
	Ramka.lineStyle(0, 0, 0);
	matrix = new Matrix();
	matrix.createGradientBox(width, height, Math.PI/4, 0, 0);
	Ramka.beginGradientFill("linear", [col1, col2], [100, 100], [0, 255], matrix);
	Ramka.moveTo(Pad, 0);
	Ramka.lineTo(width, 0);
	Ramka.lineTo(width, height-Pad);
	Ramka.curveTo(width, height, width-Pad, height);
	Ramka.lineTo(0, height);
	Ramka.lineTo(0, Pad);
	Ramka.curveTo(0, 0, Pad, 0);
	Ramka.endFill();
};
_root.onEnterFrame = function() {
	_root.fore._alpha += _root.d;
	if ((_root.d>0) and (_root.fore._alpha>=100)) {
		_root.d = -1;
	}
	if ((_root.d<0) and (_root.fore._alpha<=0)) {
		_root.NewTurn();
	}
};
_root.NewTurn();
Ок теперь код просто в первый frame нового документа скопируйте
Пожалуйста ваши мнения. Как не рябит? Если вдруг у кого то не рябит то заодно напишите характеристики машины. Процессор, виде карта, монитор. Включены-ли какие то спец опции вроде antialiasing.
Всем спасибо за мнения и тп.


Последний раз редактировалось wonderwhy; 04.12.2006 в 21:10.
Старый 04.12.2006, 19:31
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 17  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
wonderwhy, http://www.flasher.ru/forum/showthread.php?t=79864 читаем 6-ой пункт и переписываем код.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 04.12.2006, 21:25
wonderwhy вне форума Посмотреть профиль Отправить личное сообщение для wonderwhy Найти все сообщения от wonderwhy
  № 18  
Ответить с цитированием
wonderwhy
 
Аватар для wonderwhy

Регистрация: Sep 2005
Сообщений: 30
Цитата:
Сообщение от iNils
wonderwhy, http://www.flasher.ru/forum/showthread.php?t=79864 читаем 6-ой пункт и переписываем код.
Ок. Sorry. У меня вопрос есть. Есть какой то топик на эту тему здесь? Я поискал не нашел Я просто на эту тему хотел бы пару вопросов задать. Давно уже любопытно но пока так и не нашел ответов.

Старый 04.12.2006, 23:02
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 19  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
Код:
import flash.geom.Matrix;
function drawBox (mc:MovieClip, w:Number, h:Number, pad:Number, col1:Number, col2:Number):Void {
	mc.clear ();
	var matrix:Matrix = new Matrix ();
	matrix.createGradientBox (w, h, Math.PI / 4, 0, 0);
	mc.beginGradientFill ("linear", [col1, col2], [100, 100], [0, 255], matrix);
	mc.moveTo (pad, 0);
	mc.lineTo (w, 0);
	mc.lineTo (w, h - pad);
	mc.curveTo (w, h, w - pad, h);
	mc.lineTo (0, h);
	mc.lineTo (0, pad);
	mc.curveTo (0, 0, pad, 0);
	mc.endFill ();
}
this.createEmptyMovieClip ("mc0", 0);
this.createEmptyMovieClip ("mc1", 1);
mc0._x = mc0._y = 0;
mc1._x = mc1._y = 50;
mc1._alpha = 0;
this.newTurn = function () {
	this.d = 1;
	drawBox (mc0, 800, 600, 80, random (0xFFFFFF), random (0xFFFFFF));
	drawBox (mc1, 700, 500, 80, random (0xFFFFFF), random (0xFFFFFF));
};
this.onEnterFrame = function () {
	this.mc1._alpha += this.d;
	if (this.mc1._alpha >= 100) {
		this.d = -1;
	} else if (this.mc1._alpha <= 0) {
		this.newTurn ();
	}
};
this.newTurn ();
Слегка укоротил код, что бы понятней было (кстати, с большой буквы пишут только названия классов, названия функций и переменных начинаются с маленькой)

Закомментарьте первый вызов drawBox внутри newTurn (и Math.PI / 4 смените пока на ноль, чтобы голову на 45 градусов не наклонять ). Теперь смотрите как меняется градиент на однородном фоне. Меняя альфу, вы сужаете цветовой диапазон, но размеры области заливки при этом не меняются. И чем меньше альфа, тем большая ширина в пикселях приходится на один цвет, но ширина для каждого цвета одинаковая.

Теперь убираем коммент и запускаем еще раз. Теперь у нас градинет начинает суммироваться с другим (из-за альфы), но ширина для каждого цвета разная. И меняя альфу ширина опять меняется, но не равномерно.

Я сделал семпл. Это увеличенная область одного куска в середины градиента, цвета случаные. Верхная часть (A), это альфа с значением 50, нижняя (B) - это альфа с значением 51 (на самом деле 50.78125).
Название: grad.png
Просмотров: 36

Размер: 1.6 Кб
Как видно, в одной и той же общей области, при разных значениях альфа, ширина подобластей с одним цветом совершенно разная.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 05.12.2006, 01:12
wonderwhy вне форума Посмотреть профиль Отправить личное сообщение для wonderwhy Найти все сообщения от wonderwhy
  № 20  
Ответить с цитированием
wonderwhy
 
Аватар для wonderwhy

Регистрация: Sep 2005
Сообщений: 30
Хек совсем малёк сократил. В принципе поправить это средствами Flash нельзя но тут некоторые утверждали что у них не видно полосок или почти не видно. Мне вот любопытно есть ли сейчас кто-то у кого не видно полосок даже с переходами. Просто если есть какие то видео карты или мониторы которые это могут сгладить то я бы хотел знать какие.

Создать новую тему Ответ Часовой пояс GMT +4, время: 19:54.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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