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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 24.06.2008, 19:44
Alex_beginner вне форума Посмотреть профиль Отправить личное сообщение для Alex_beginner Найти все сообщения от Alex_beginner
  № 1  
Ответить с цитированием
Alex_beginner
 
Аватар для Alex_beginner

Регистрация: May 2008
Сообщений: 476
По умолчанию Метод beginGradientFill(). Баг или что то еще...

Здравствуйте уважаемые Форумчане!

У меня есть простой вопрос ответ на который никак не укладывается у меня в голове (наверно я тупой). Однако, мне очень желательно разобраться в этом вопросе. Вот, собственно, сам вопрос:

"Известный метод класса MovieClip - beginGradientFill() принимает ряд параметров, два из которых это fillType и interpolationMethod. Так вот передав в метод в качестве fillType строковое значение linear, а в качестве значения interpolationMethod - linearRGB и задав в качестве параметра matrix - матрицу индентичности (по главной диагонали 1) вдруг выясняется, что середина "гигантского градиента" (от -819.2 до 819.2) т.е. в нулевой позиции значение цвета градиента вовсе не 128 (для одноцветного градиента - например, красного)". Если же я выставляю значение interpolationMethod в RGB - градиент становиться вдруг линейным.

Что это баг или закономерное поведение метода?!!!
__________________
Случайность, господа, это знаете ли непознанная необходимость.

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Хочу код!
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 25.06.2008, 10:43
Alex_beginner вне форума Посмотреть профиль Отправить личное сообщение для Alex_beginner Найти все сообщения от Alex_beginner
  № 3  
Ответить с цитированием
Alex_beginner
 
Аватар для Alex_beginner

Регистрация: May 2008
Сообщений: 476
Здравствуй iNils!
Выкладываю тестовый код.

Обрати внимание на следующее:

1. Клик на крайнем левом пикселе дает значение цвета 0x000000;
2. Клик на крайнем правом пикселе дает значение цвета 0xFF0000;
3. Клик на центральном пикселе дает значение цвета 0xBB0000 (R=0xBB=187), что не соответствует среднему значению цвета между 0 и 255 - 128. Это, собственно, и непонятно, поскольку в параметре interpolationMethod выставлено значение linearRGB.

Заранее благодарен!
Вложения
Тип файла: rar Тест beginGradientFill.rar (4.0 Кб, 37 просмотров)
__________________
Случайность, господа, это знаете ли непознанная необходимость.

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Линейный градиент в цифрах как раз дает RGB, а linearRGB - визуально. Что хорошо видно в скринах хелпа.
Код:
import flash.geom.Matrix;
import flash.display.BitmapData;
var myClip:MovieClip = this.createEmptyMovieClip ("myClip", this.getNextHighestDepth ());
var w:Number = 2000;
var myMatrix:Matrix = new Matrix ();
myMatrix.createGradientBox (w, 900, 0, 0, 0);
myClip.beginGradientFill ("linear", [0x000000, 0x0000FF], [100, 100], [0x00, 0xFF], myMatrix, "repeat", "RGB");
myClip.moveTo (0, 0);
myClip.lineTo (w, 0);
myClip.lineTo (2000, 900);
myClip.lineTo (0, 900);
myClip.lineTo (0, 0);
myClip.endFill ();
var myBMP:BitmapData = new BitmapData (myClip._width, myClip._height, false);
myBMP.draw (myClip, new Matrix (), null, "normal", null, false);
trace (myBMP.getPixel (w / 4, 0));
trace (myBMP.getPixel (w / 2, 0));
trace (myBMP.getPixel (w * 3 / 4, 0));
__________________
(и)Нильс.ru | Плагины для FlashDevelop


Последний раз редактировалось iNils; 25.06.2008 в 17:53.
Старый 25.06.2008, 17:51
Alex_beginner вне форума Посмотреть профиль Отправить личное сообщение для Alex_beginner Найти все сообщения от Alex_beginner
  № 5  
Ответить с цитированием
Alex_beginner
 
Аватар для Alex_beginner

Регистрация: May 2008
Сообщений: 476
iNils! Действительно в скринах хелпа видно, что RGB линейный, а linearRGB нелинейный. Но фактически linear означает линейный, а в данном случае он не линейный, а скорее квадратичный.
И потом зачем нужно было разработчикам Флеша разделять так называемую линейность градиента на визуальную и та что "в цифрах". Не лучше ли было сделать две константы определяющую вид градиента - первая linearRGB - линейный как "в цифрах" так и визуально, вторая - quadraticRGB, который как в цифрах, так и визульно выглядит как квадратичный.
__________________
Случайность, господа, это знаете ли непознанная необходимость.

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Разработчика флеша тут не причем. Это уже исторически сложилось.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

Регистрация: May 2008
Сообщений: 476
Ууупс! iNils! Подскажи где про эту историю почитать (желательно на русском) - благодарен буду.
__________________
Случайность, господа, это знаете ли непознанная необходимость.

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

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

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


 


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


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