【问题标题】:Color based on distance基于距离的颜色
【发布时间】:2016-06-10 19:42:00
【问题描述】:

这个问题已经有一个有效的答案: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 是与光源的距离,如果您无法从函数名称中计算出来的话。

【问题讨论】:

  • 那么你的问题是颜色计算还是距离计算?大概是前者,因为您的代码已经硬编码,但最好把它说清楚。如果您想查看一些调整亮度/暗度的代码,请参阅 this examplethis one

标签: actionscript-3


【解决方案1】:

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

getDistance() 应该返回一个数值。下一步是创建将数字编码为颜色的函数或算法。这可能只是将RGB 颜色的R 设置为等于距离(在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(黑色/关闭)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多