如何在 cocos2d 中创建色相(饱和度)选择器

Posted

技术标签:

【中文标题】如何在 cocos2d 中创建色相(饱和度)选择器【英文标题】:How to create a hue (saturation) picker in cocos2d 【发布时间】:2013-08-28 02:47:09 【问题描述】:

我正在尝试为 cocos2d 创建一个简化的色相/饱和度选择器。我想创建一个渐变并从中挑选。我需要为每种颜色(如蓝色、红色等)重新着色黑白图像渐变。所以我需要创建许多渐变。我知道我应该使用一些混合功能来实现这一点。 但我仍然有点困惑什么是最好的方法。 我应该使用混合函数吗?

我的问题基本上是我使用从黑色到透明或到白色的渐变,但使用

sprite.setColor(color);

我得到了从黑色到所需颜色的渐变,但我需要从所需较暗颜色到白色的渐变。

【问题讨论】:

【参考方案1】:

您需要做的是创建一个 2D 渐变,从左到右从不饱和到饱和,从下到上从暗到亮。我会通过创建一个新的位图(或者如果你使用 OpenGL,一个纹理)来做到这一点。然后我会使用以下伪代码为每个像素着色:

hue = <whatever the user set the hue to>
for (row = 0; row < height; row++)

    for (col = 0; col < width; col++)
    
        sat = col / width;
        val = row / height;
        rgb = HSVToRGB(hue, sat, value);
        setPixel (col, row, rgb);
    

【讨论】:

是的,这个想法很好。我什至考虑过这一点,但我可以在 cocos2d 中将它转换为彩色 Sprite 并可以在屏幕上移动它吗?因此,我更倾向于使用黑白图像创建精灵,然后使用基色对其进行着色。

以上是关于如何在 cocos2d 中创建色相(饱和度)选择器的主要内容,如果未能解决你的问题,请参考以下文章

我如何在 cocos2d 中创建 30 分钟倒计时计时器,就像糖果迷生活一样。

Photoshop 中的色相/饱和度调整图层算法

1 色相饱和度明度定义

PS 色相饱和度和明度

PS 色相饱和度和明度

PS 色相饱和度和明度