Создание линий градиента и заливокFlash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий С помощью графического объекта также можно создавать штрихи и заливки с градиентами вместо сплошных цветов. Штрих градиента создается с помощью метода lineGradientStyle(), а заливка градиента — с помощью метода beginGradientFill(). Оба метода имеют одни и те же параметры. Первые четыре параметра являются обязательными: тип, цвета, альфа-каналы и коэффициенты. Оставшиеся четыре параметра являются необязательными, но могут использоваться при расширенной настройке.
Несмотря на факультативность пятого параметра — матрицы преобразования — он часто используется, поскольку обеспечивает простой и эффективный способ управления внешним видом градиента. Этот параметр поддерживает экземпляр Matrix. Наиболее простым способом создания объекта Matrix для градиента является использование метода createGradientBox() класса Matrix. Определение объекта Matrix для использования с градиентомДля определения градиентов и использования их в фигурах используйте методы beginGradientFill() и lineGradientStyle() класса flash.display.Graphics. При определении градиента матрица предоставляется в качестве одного из параметров этих методов. Наиболее простым способом определения матрицы является использование метода createGradientBox() класса Matrix, который создает матрицу, используемую для определения градиента. Масштаб, поворот и положение градиента указываются с помощью параметров, передаваемых в метод createGradientBox(). Метод createGradientBox() поддерживает следующие параметры.
Например, рассмотрим градиент со следующими характеристиками:
В следующих примерах представлены градиенты, отличающиеся только по параметру rotation метода createGradientBox():
В следующих примерах показано изменение линейных градиентов (от зеленого к синему), отличающихся только по параметрам rotation, tx и ty метода createGradientBox():
Параметры width, height, tx и ty метода createGradientBox() также оказывают влияние на размер и положение заливки градиента radial, как это показано в следующем примере:
Радиальный градиент из последнего примера создан посредством следующего кода: import flash.display.Shape; import flash.display.GradientType; import flash.geom.Matrix; var type:String = GradientType.RADIAL; var colors:Array = [0x00FF00, 0x000088]; var alphas:Array = [1, 1]; var ratios:Array = [0, 255]; var spreadMethod:String = SpreadMethod.PAD; var interp:String = InterpolationMethod.LINEAR_RGB; var focalPtRatio:Number = 0; var matrix:Matrix = new Matrix(); var boxWidth:Number = 50; var boxHeight:Number = 100; var boxRotation:Number = Math.PI/2; // 90° var tx:Number = 25; var ty:Number = 0; matrix.createGradientBox(boxWidth, boxHeight, boxRotation, tx, ty); var square:Shape = new Shape; square.graphics.beginGradientFill(type, colors, alphas, ratios, matrix, spreadMethod, interp, focalPtRatio); square.graphics.drawRect(0, 0, 100, 100); addChild(square); Обратите внимание, что ширина и высота заливки градиента определяются соответствующими параметрами матрицы градиента, а не объектом Graphics. При рисовании с помощью объекта Graphics рисунок создается в координатах матрицы градиента. Даже при использовании одного из методов фигур объекта Graphics, например drawRect(), градиент не растягивается до размера созданной фигуры; размер градиента необходимо указать в самой матрице градиента. В примере представлено визуальное различие между размером матрицы градиента и размером самого рисунка: var myShape:Shape = new Shape(); var gradientBoxMatrix:Matrix = new Matrix(); gradientBoxMatrix.createGradientBox(100, 40, 0, 0, 0); myShape.graphics.beginGradientFill(GradientType.LINEAR, [0xFF0000, 0x00FF00, 0x0000FF], [1, 1, 1], [0, 128, 255], gradientBoxMatrix); myShape.graphics.drawRect(0, 0, 50, 40); myShape.graphics.drawRect(0, 50, 100, 40); myShape.graphics.drawRect(0, 100, 150, 40); myShape.graphics.endFill(); this.addChild(myShape); С помощью этого кода создаются три градиента с одинаковым стилем заливки, цвет которой в равной степени содержит красный, зеленый и синей цвета. Градиенты создаются с помощью метода drawRect() с шириной 50, 100 и 150 пикселов соответственно. Ширина создаваемой матрицы градиента, указанной в методе beginGradientFill(), равна 100 пикселам. Это означает, что первый градиент охватит только половину спектра градиента, второй — весь спектр, третий — весь спектр, а также дополнительные 50 пикселов синего цвета, распространяющегося вправо. Метод lineGradientStyle() аналогичен методу beginGradientFill(), за исключением того, что помимо определения градиента перед началом рисования необходимо указать толщину штриха с помощью метода lineStyle(). Следующий код создает прямоугольник с красным, зеленым и синим штрихом градиента: var myShape:Shape = new Shape(); var gradientBoxMatrix:Matrix = new Matrix(); gradientBoxMatrix.createGradientBox(200, 40, 0, 0, 0); myShape.graphics.lineStyle(5, 0); myShape.graphics.lineGradientStyle(GradientType.LINEAR, [0xFF0000, 0x00FF00, 0x0000FF], [1, 1, 1], [0, 128, 255], gradientBoxMatrix); myShape.graphics.drawRect(0, 0, 200, 40); this.addChild(myShape); Дополнительные сведения о классе Matrix см. в разделе «Использование объектов Matrix». |
|