基于距离的颜色

时间:2016-06-10 19:42:01

标签: actionscript-3

  

此问题已经 Weird graphical bug in > AS3?

中有一个有效的答案

我试图在AS3中制作一个简单的瓷砖照明系统,而我遇到的问题是我不知道如何使用十六进制颜色代码根据距离更改颜色

下面是变色部分的代码:

for (var i:int = 0; i < buttons.length; i++) {
    lightFact = getDistance(lightSource, buttons[i])
    colorTransform2.color = 0x000000
    DisplayObject(buttons[i]).transform.colorTransform = colorTransform2;
}

lightFact是与lightSource的距离,如果你不能从函数名中找出来的那样。

1 个答案:

答案 0 :(得分:2)

我不确定这段代码的最终目标是什么,但我们走了。

getDistance()应该返回一个数值。下一步是创建一个将数字编码为颜色的函数或算法。这可能只是设置R颜色的RGB等于距离(设置上限为255)或许多if - else语句,如:

if(lightFact < XValue)
{
    colorTransform2.color = 0xFF0000;
}
else if(lightFact < YValue) 
{
    colorTransform2.color = 0x00FF00;
}
else
{
    colorTransform2.color = 0x0000FF;
}

或您可能喜欢的任何其他更复杂的编纂。无论哪种方式,您选择的任何编码都需要某种逻辑来检查lightFact的值并基于它(以及您可能拥有的任何其他变量)进行计算或决定设置不同的值到colorTransform2.color。否则colorTransform.color始终为0x000000(黑/已关闭)。