我正在使用color.js,我正在尝试向setColor
添加回调函数。我在line #177之前添加了以下代码:
if (_instance.options.setColorCallback) {
_instance.options.setColorCallback(convertColors(type, save ? colors : undefined));
}
效果很好,但问题是当我尝试使用setColor
颜色格式Lab
时。当我这样做时,回调函数不会执行。以下是setColor
使用Lab
色彩空间的方式:(Source)
if (type === 'Lab') {
var factor = (e.clientX - startPoint.left) / currentTargetWidth;
factor = factor > 1 ? 1 : factor < 0 ? 0 : factor;
myColor.colors.Lab[mode] = (mode === 'L') ? factor * 100 : (factor * 255) - 128;
myColor.setColor(null, 'Lab');
}
如何向setColor
添加回调函数?
答案 0 :(得分:0)
尽管修改这样的库是一种不好的做法,但是如果你决定这样做,那么在#177行进行修改#204行,并替换
function convertColors(type, colorObj) {
与
function convertColors(type, colorObj) {
var convertResult = __convertColors(type, colorObj);
if (_instance.options.afterColorsConvert) {
_instance.options.afterColorsConvert(convertResult);
}
return convertResult;
}
function __convertColors(type, colorObj) {
这是因为setColor包含在#76行中,并且在setColor的两个代码定义中都使用了convertColors,因此最好扩展convertColors功能。
答案 1 :(得分:0)
这个问题显然已经解决了,我只想添加更多信息以便完成; o)
函数setColor()
返回convertColors()
,它有一个名为convertCallback()
的回调函数,您可以使用它,因此无需在setColor()
中创建自己的函数。 / p>
此外,如果您要在#177行之前添加一个回调,因为convertColors()
尚未被调用,因此您将处理错误的颜色值。
BTW:@Horay,如果您仍然感兴趣的话,我更新了colorPicker的演示文稿(评论时)如何实现Lab滑块。