今天下午在论坛里提了一个问题
高手真多
颜色填充问题
我在循环里生成六个矩形
这六个矩形要用不同的颜色(但是这六个颜色是渐变的)来填充
比如像这样
for(var i:uint=0;i<6;i++){
graphics.beginFill(color);
graphics.drawRect(0,0,8);
graphics.endFill();
}
里面的color要写成什么样,才能让它是渐变色。直接用RGB来表示简单,还是用HSL表示简单。
我想先让它是同色相的,比如从白的0xffffff,到灰的0xcccccc到0x999999到0x666666到0x333333最后刚好到黑的0x000000
可以了之后再加一个循环,写不同色相的渐变。
不知道我有没有把问题说清楚。麻烦各位高人指点。
里面的color要写成什么样,才能让它是渐变色???
=========================================
一牛人给了答案:
package ziv.utils {
/**
* @Class: ziv.utils.ColorUtil
* @Author ziv.yuan
* @Version: ver 1.0
* @Describe:
*
* @Usage:
*
*/
public class ColorUtil {
public static function getColorBetween(ca:Number=0xFFFFFF, cb:Number=0x0, percent:Number=0.5):Number {
var coa:Object = getColorObject(ca);
var cob:Object = getColorObject(cb);
var cre:Object = getColorObject(0);
percent = percent > 1 ? 1 : percent < 0 ? 0: percent;
cre["R"] = Math.round((cob["R"]-coa["R"])*percent) + coa["R"];
cre["G"] = Math.round((cob["G"]-coa["G"])*percent) + coa["G"];
cre["B"] = Math.round((cob["B"]-coa["B"])*percent) + coa["B"];
return cre["R"]<<16|cre["G"]<<8|cre["B"];
}
public static function getColorObject(c:Number):Object {
var rc:Object = {};
rc["R"] = c >> 16 & 0xFF;
rc["G"] = c >> 8 & 0xFF;
rc["B"] = c & 0xFF;
return rc;
}
}
}
根据百分比取中间色的类
LZ的6个颜色分别是
ColorUtil.getColorBetween(0xFFFFFF, 0x0, 0/5);
ColorUtil.getColorBetween(0xFFFFFF, 0x0, 1/5);
ColorUtil.getColorBetween(0xFFFFFF, 0x0, 2/5);
ColorUtil.getColorBetween(0xFFFFFF, 0x0, 3/5);
ColorUtil.getColorBetween(0xFFFFFF, 0x0, 4/5);
ColorUtil.getColorBetween(0xFFFFFF, 0x0, 5/5);
还是不懂算法--可怜的
没有评论:
发表评论