advk
08.01.2010, 11:45
Собственно имеется задача, необходимо программно нарисовать прямоугольник с градиентом, а потом программно изменять его размеры и подвигать.
Написал вот такой код:
var x = 0;
var y = 400;
var w = 500;
var h = 100;
var type:String = GradientType.LINEAR;
var colors:Array = [0xF00000, 0x970000];
var alphas:Array = [1, 1];
var ratios:Array = [0, 255];
var gradientBoxMatrix:Matrix = new Matrix();
gradientBoxMatrix.createGradientBox(w, h, Math.PI/2, x, y );
var rect:Shape = new Shape();
rect.graphics.beginGradientFill(type,
colors,
alphas,
ratios,gradientBoxMatrix);
rect.graphics.lineStyle(1, 0x000000);
rect.graphics.drawRect(x, y, w, h);
rect.graphics.endFill();
addChild(rect);
rect.height = 50;
Прямоугольник изначально рисуется такой какой нужно и там где нужно, но если
изменить height(rect.height=50), то он сильно сдвигается наверх.
Собственно как это побороть? Или эту задачу лучше решить каким-нибудь другим способом?
Написал вот такой код:
var x = 0;
var y = 400;
var w = 500;
var h = 100;
var type:String = GradientType.LINEAR;
var colors:Array = [0xF00000, 0x970000];
var alphas:Array = [1, 1];
var ratios:Array = [0, 255];
var gradientBoxMatrix:Matrix = new Matrix();
gradientBoxMatrix.createGradientBox(w, h, Math.PI/2, x, y );
var rect:Shape = new Shape();
rect.graphics.beginGradientFill(type,
colors,
alphas,
ratios,gradientBoxMatrix);
rect.graphics.lineStyle(1, 0x000000);
rect.graphics.drawRect(x, y, w, h);
rect.graphics.endFill();
addChild(rect);
rect.height = 50;
Прямоугольник изначально рисуется такой какой нужно и там где нужно, но если
изменить height(rect.height=50), то он сильно сдвигается наверх.
Собственно как это побороть? Или эту задачу лучше решить каким-нибудь другим способом?