Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как задать Rotate в beginGradientFill (http://www.flasher.ru/forum/showthread.php?t=99219)

voy22 31.07.2007 14:00

Как задать Rotate в beginGradientFill
 
В принцыпе этот вопрос наверно актуален и для AS 1/2.0 и возможно где то подымался.

Нет, как задать через matrix - это ваопрос понятный, но для matrix нужны конечные размеры фигуры.

Если matrix опустить, то радиальная заливка идет слева на право, и никаких размеров знать не надо - по умолчанию от границы до границы - все отлично. Как теперь мне сделать тоже самое сверху в низ?

P.S. Вариант Shape.rotation не рассматриваю

etc 31.07.2007 15:02

Ну размеры того, что вы рисуете, вам же известны?

vapes 31.07.2007 15:41

Пореверните обьект на 90 или -90 градусов и залейте его, а потом опять поверните :)

etc 31.07.2007 15:52

vapes, пробовал?

vapes 31.07.2007 16:11

нет не пробовал, но скорей всего повернуть придется через МаtrixTransform, простой rotation не поможет

__i 31.07.2007 16:15

кто мешает делать матрицу в зависимости от исходных размеров заливаемых объектов ?

voy22 31.07.2007 16:54

Да ничего не мешает, просто когда matrix опускаешь, градиент как будто бы выставляет 100% (по умолчанию только по вертикале). Вот я и задумался, зачем создавать лишний объект ради поворота радиальной заливки.

voy22 31.07.2007 16:58

Цитата:

Сообщение от vapes
Пореверните обьект на 90 или -90 градусов и залейте его, а потом опять поверните :)

P.S. Вариант Shape.rotation не рассматриваю

voy22 06.08.2007 19:49

Наткнулся еще на одну проблемму. Вот Код:
Код:

var r:Number = 90; // Угол поворота радиальной заливки
var sh:Shape = new Shape();
var m:Matrix = new Matrix();
m.createGradientBox(50, 200, 0, 0, 0);
m.rotate(r * Math.PI/180);

sh.graphics.beginGradientFill('linear', [0xff0000, 0x0000ff], [1,1], [0, 255], m);
sh.graphics.lineTo(200, 0);
sh.graphics.lineTo(200, 50);
sh.graphics.lineTo(0, 50);
sh.graphics.lineTo(0, 0);
sh.graphics.endFill();

addChild(sh);

Смотрим... В прямоугольнике идет радиальная заливка, сверху в низ, и все равномерно. Теперь переменной "r" задаем "0" или "180"... и центр радиальной заливки смещается от центра самой фигуры.
Все решается таким путем: m.createGradientBox(200, 50, 0, 0, 0);
Но это решаемо, если угол поворота прямой. Но мне нужен любой угол, и что бы центр заливки оставался в центре фигуры. )*( чую, что нужна хитрая формула для расчета первых двух значений createGradientBox, в зависимости от габаритов фигуры и угла наклона. Может есть готовые решения?


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

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