Это, кажется, очень прямолинейная вещь, и есть множество учебников по этому вопросу. Никто из них не помогает мне понять это правильно, и я не могу на всю жизнь понять, что случилось.
Я пытаюсь создать простой графический компонент Flash AS3 с вертикальным градиентом. Я создаю спрайт и рисую градиент с помощью beginGradientFill и матрицы с углом радиана 90 градусов. Если вы посмотрите на этот вывод, вы увидите, что он не создает вертикальный градиент от черного к белому.
package
{
import flash.display.GradientType;
import flash.display.Shape;
import flash.display.Sprite;
import flash.geom.Matrix;
public class Main extends Sprite
{
public function Main()
{
var theWidth : Number = 800;
var theHeight: Number = 100;
var shape1:Shape = new Shape();
var matrix:Matrix = new Matrix();
matrix.createGradientBox(theWidth , theHeight, Math.PI*0.5, 0, 0);
var colors:Array = [ 0xffffff, 0x000000];
var alphas:Array = [ 1, 1];
var ratios:Array = [ 0, 255];
shape1.graphics.lineStyle(2,0xa1b0b6);
shape1.graphics.beginGradientFill(GradientType.LINEAR,colors, alphas, ratios, matrix);
shape1.graphics.drawRect( 0.0, 0.0, theWidth , theHeight);
shape1.graphics.endFill();
addChild(shape1);
}
}
}
Если я изменюсь
matrix.createGradientBox(800, 100, Math.PI*0.5, 0, 0);
до
matrix.createGradientBox(800, 100, Math.PI, 0, 0);
работает нормально - но горизонтально - почему не работает заливка на 90 градусов?
Спасибо за вашу помощь, я действительно не знаю, что не так с этим