|
|
|||||
Регистрация: Apr 2010
Сообщений: 32
|
16 - 2 в четвертой степени. Просто первое число, которое пришло в голову.
Насчет транслирования в центр треугольника - не понимаю зачем. У меня работает как надо с трансляцией в первую точку, что вполне логично. Градиент получается полный от первой вершины до второй. Попробовал транслировать в центр, градиент получился половинчатым. |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Цитата:
playerglobal_10.1.swc -> flash.geom.Matrix: public function createBox(scaleX:Number, scaleY:Number, rotation:Number = 0, tx:Number = 0, ty:Number = 0) : void { this.identity(); this.rotate(rotation); this.scale(scaleX, scaleY); this.tx = tx; this.ty = ty; return; } public function createGradientBox(width:Number, height:Number, rotation:Number = 0, tx:Number = 0, ty:Number = 0) : void { this.createBox(width / 1638.4, height / 1638.4, rotation, tx + width / 2, ty + height / 2); return; }
__________________
Загружаем картинки, минуя ошибки безопасности |
|
|||||
Градиент вращается вокруг центра (центр здесь - это центр прямоугольника, заданного в виде width, height), и 'точка регистрации' находится в центре. Когда делаешь translate - ты прибавляешь к уже существующим tx и ty некоторое значение, т.е. неочевидно совершенно какие параметры стали у матрицы. Правильнее жестко задать эти tx и ty.
@i.o.: снова эти магические цифры... Лично мне совсем не понятно что они означают. Особенно эти 1638.4. Зачем это? Последний раз редактировалось Волгоградец; 21.02.2011 в 20:03. |
|
|||||
Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
|
Цитата:
Добавлено через 2 минуты Волгоградец, зная как работает createGradientBox и как вы не хотели бы чтобы он работал, то можете написать свой вариант. Т.к. все равно используется Matrix.
__________________
Загружаем картинки, минуя ошибки безопасности Последний раз редактировалось i.o.; 21.02.2011 в 20:11. |
|
|||||
Lorem ipsum
|
Работает для любого прямоугольного треугольника вроде.
var p1:Point = new Point(50, 250); var p2:Point = new Point(200, 100); // corner point var p3:Point = new Point(250, 150); var d23:Number = Point.distance(p2, p3); var angle:Number = Math.atan2(p3.y - p2.y, p3.x - p2.x); var matrix:Matrix = new Matrix(); matrix.createGradientBox(d23, d23, angle, (p3.x + p2.x) / 2 - d23 / 2, (p3.y + p2.y) / 2 - d23 / 2); graphics.lineStyle(0, 0); graphics.beginGradientFill(GradientType.LINEAR, [0x000000, 0xffffff], [1, 1], [0, 255], matrix); graphics.moveTo(p1.x, p1.y); graphics.lineTo(p2.x, p2.y); graphics.lineTo(p3.x, p3.y); graphics.lineTo(p1.x, p1.y); graphics.endFill();
__________________
Поймай яблоко 2! |
Часовой пояс GMT +4, время: 10:02. |
|
« Предыдущая тема | Следующая тема » |
|
|