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

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

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

Регистрация: Dec 2005
Адрес: Moscow
Сообщений: 84
Отправить сообщение для heilong с помощью ICQ
По умолчанию странно работает beginGradientFill

Пытаюсь нарисовать прямоугольный треугольник с градиентом, направленным от вершины прямого угла к гипотенузе (т.е. повёрнутого на 45 градусов). Код под 8й флэш.

Код:
import flash.geom.Matrix;

createEmptyMovieClip('mc', getNextHighestDepth());
matrix = new Matrix();
matrix.createGradientBox(128, 128, Math.PI / 4, 0, 0);
mc.beginGradientFill('linear', [0xff0000, 0x000000], [100, 100], [0, 255], matrix);
mc.moveTo(0, 0);
mc.lineTo(256, 0);
mc.lineTo(0, 256);
mc.lineTo(0, 0);
mc.endFill();
Получается совсем не то что надо. Для сравнения - то же самое, сделанное заливкой градиентом без всяких поворотов, а потом поворачивается уже сам MovieClip, всё выглядит как надо:

Код:
createEmptyMovieClip('mc2', getNextHighestDepth());
var k = 256 * Math.sqrt(2);
matrix.createGradientBox(k/2, k/2, 0, 0, 0);
mc2.beginGradientFill('linear', [0xff0000, 0x000000], [100, 100], [0, 255], matrix);
mc2.moveTo(0, 0);
mc2.lineTo(k/2, -k/2);
mc2.lineTo(k/2, k / 2);
mc2.lineTo(0, 0);
mc2.endFill();
transform_matrix = mc2.transform.matrix;
transform_matrix.rotate(Math.PI / 4);
mc2.transform.matrix = transform_matrix;
Почему в первом примере не удаётся добиться того же результат, что и во втором? Более-менее похоже, если сделать:
Код:
matrix.createGradientBox(128 * Math.sqrt(2), 128 * Math.sqrt(2), Math.PI / 4, -128 / (4*Math.sqrt(2)), -128 / (4*Math.sqrt(2)));
но это как-то совсем от балды...

Старый 21.05.2006, 10:13
0xFFFFFF вне форума Посмотреть профиль Отправить личное сообщение для 0xFFFFFF Посетить домашнюю страницу 0xFFFFFF Найти все сообщения от 0xFFFFFF
  № 2  
Ответить с цитированием
0xFFFFFF
† Таня Белая
 
Аватар для 0xFFFFFF

Регистрация: Mar 2006
Адрес: Москва
Сообщений: 929
Отправить сообщение для 0xFFFFFF с помощью ICQ Отправить сообщение для 0xFFFFFF с помощью Skype™
у меня оба результаты похожи. в чем пробема?
__________________
Flashress' Blogue

Старый 21.05.2006, 13:03
heilong вне форума Посмотреть профиль Отправить личное сообщение для heilong Посетить домашнюю страницу heilong Найти все сообщения от heilong
  № 3  
Ответить с цитированием
heilong
 
Аватар для heilong

Регистрация: Dec 2005
Адрес: Moscow
Сообщений: 84
Отправить сообщение для heilong с помощью ICQ
у меня во flash 8 они похожи, но далеко не идентичны, что видно как невооружённым глазом так и сравнением в photoshop-е.
в первом примере например рядом с вершиной довольно большая область чистого красного цвета, переход по градиенту почему-то начинается далеко не сразу, а где-то на расстоянии 20-25 пикселей от вершины. мне нужно сделать треугольник с катетам по 128 пикселей так чтобы у гипотенузы цвет уже переходи в чёрный. Расстояние до гипотенузы 128 / sqrt(2), поэтому логично сделать createGradientBox(128 / Math.sqrt(2), 128 / Math.sqrt(2), Math.PI / 4, 0, 0), но это не работает - около вершины область цельнокрасного, около гипотенузы - не чёрный цвет (с примесью красного). если рисовать сразу не треугольник а квадрат 128x128, видно что градиент заканчивается дальше чем диагональ этого квадрата, хотя по идее (128/sqrt(2)) должен бы на диагонали.

люди, помогите, очень не хочется вращать сам movieclip, читерство это

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

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

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


 


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


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