Показать сообщение отдельно
Старый 30.07.2008, 02:52
crazyone вне форума Посмотреть профиль Отправить личное сообщение для crazyone Найти все сообщения от crazyone
  № 5  
Ответить с цитированием
crazyone
 
Аватар для crazyone

блогер
Регистрация: Nov 2007
Адрес: Киев
Сообщений: 557
Записей в блоге: 2
Разделяете 255 на количество ваших пунктов меню. Или даже плюс один. Т.е. если у вас 5 пунктов, вам нужно 255/6. И дальше рисуете градиент в каждом из ваших пунктов меню с нужными значениями.

Есть еще такая радость:
Код:
		Number.prototype.HEXtoRGB = function() {
			return {rb:this >> 16, gb:(this >> 8) & 0xff, bb:this & 0xff};
		};
		Color.prototype.blendRGB = function(c1, c2, t) {
			if (arguments.length == 2) {
				t = c2;
				c2 = this.getRGB();
			}
			if (t<-1) {
				t = -1;
			} else if (t>1) {
				t = 1;
			}
			if (t<0) {
				t = 1+t;
			}
			c1 = c1.HEXtoRGB();
			c2 = c2.HEXtoRGB();
			var ct = (c1.rb+(c2.rb-c1.rb)*t) << 16 | (c1.gb+(c2.gb-c1.gb)*t) << 8 | (c1.bb+(c2.bb-c1.bb)*t);
			this.setRGB(ct);
			return ct;
		};
Теперь у класса Color есть метод blendRGB, который позволяет смешивать два цвета в заданной пропорции.

Дальше просто:
Код:
import flash.geom.Matrix;
		
var topcolor=0xcccccc;
var bottomcolor=0x333333;
var itemarr=Array(btn1,btn2,btn3,btn4,btn5);
c=new Color();
var startcolor=topcolor;
for(var i=0;i<itemarr.length;i++){
	endcolor=c.blendRGB(topcolor,bottomcolor,i/(itemarr.length-1));
	drawGradient(itemarr[i],startcolor,endcolor);
	startcolor=endcolor;
}

function drawGradient(mc,sc,ec){
	var bbox=mc.getBounds();
	var gmtrx:Matrix=new Matrix();
	gmtrx.createGradientBox(bbox["xMax"]-bbox["xMin"],bbox["yMax"]-bbox["yMin"],Math.PI/2);
	mc.beginGradientFill("linear",[sc,ec],[100,100],[0,255],gmtrx);
	mc.moveTo(bbox["xMin"],bbox["yMin"]);
	mc.lineTo(bbox["xMax"],bbox["yMin"]);
	mc.lineTo(bbox["xMax"],bbox["yMax"]);
	mc.lineTo(bbox["xMin"],bbox["yMax"]);
	mc.lineTo(bbox["xMin"],bbox["yMin"]);
	mc.endFill();
}
Я не уверен, что вам нужны квадратные кнопки. Хотя и это можно пофиксить.
Удачи вам.

Хотя я бы делал именно тем вариантом, который вы назвали грязным и неправильным.