Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/423.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将颜色更改为开尔文_Javascript_React Native - Fatal编程技术网

Javascript 将颜色更改为开尔文

Javascript 将颜色更改为开尔文,javascript,react-native,Javascript,React Native,我来找你是因为我对这个本色轮子有问题,我想把轮子换成开尔文的颜色轮子。我尝试过修补一些东西,但没有任何效果,我真的很难进行极坐标计算,如果有人能给我指出来的话 谢谢你们 从“道具类型”导入道具类型; 从“React”导入React,{Component}; 从“react native”导入{动画、图像、维度、PanResponder、视图}; 从“colorsys”导入colorsys; 从“./styles”导入样式; 导出默认类ColorWheelWhite扩展组件{ 静态类型={ to

我来找你是因为我对这个本色轮子有问题,我想把轮子换成开尔文的颜色轮子。我尝试过修补一些东西,但没有任何效果,我真的很难进行极坐标计算,如果有人能给我指出来的话

谢谢你们

从“道具类型”导入道具类型;
从“React”导入React,{Component};
从“react native”导入{动画、图像、维度、PanResponder、视图};
从“colorsys”导入colorsys;
从“./styles”导入样式;
导出默认类ColorWheelWhite扩展组件{
静态类型={
toggleMeToforceUpdateInitialColor:PropTypes.number,
initialColor:PropTypes.string,
onColorChangeComplete:PropTypes.func,
thumbSize:PropTypes.number,
onColorChange:PropTypes.func,
thumbStyle:PropTypes.object,
prevState:PropTypes.string,
样式:PropTypes.object
};
静态defaultProps={
拇指尺寸:50,
初始颜色:'#ffffff',
onColorChange:()=>{}
};
静态getDerivedStateFromProps(props,状态){
const{toggleMeToforceUpdateInitialColor}=props;
if(toggleMeToforceUpdateInitialColor!==状态。toggleMeToforceUpdateInitialColor){
返回{
切换MetoForceUpdateInitialColor
};
}
返回null;
}
建造师(道具){
超级(道具);
const{initialColor,toggleMeToforceUpdateInitialColor=0}=props;
此.state={
偏移量:{x:100,y:100},
currentColor:initialColor,
平移:新的动画.ValueXY(),
切换MetoForceUpdateInitialColor,
半径:200,
panHandlerReady:是的,
didUpdateThumb:错误
};
}
componentDidMount=()=>{
这是.\u panResponder=panResponder.create({
onStartShouldSetPanResponderCapture:()=>true,
onStartShouldSetPanResponder:()=>true,
onMoveShouldSetPanResponderCapture:()=>true,
onPanResponderGrant:({nativeEvent})=>{
如果(this.outBounds(nativeEvent))返回;
如果(!this.state.didUpdateThumb){
此.updateColorAndThumbPosition(nativeEvent);
}
},
onPanResponderMove:(事件,手势状态)=>{
if(this.outBounds(gestureState))返回;
如果(!this.state.didUpdateThumb){
const{nativeEvent}=事件;
此.updateColorAndThumbPosition(nativeEvent);
}
这是resetPanHandler();
return.event(
[
无效的
{
dx:这个州,泛x,
戴:这个。州。潘。y
}
],
{侦听器:this.updateColor}
)(事件、手势状态);
},
onMoveShouldSetPanResponder:()=>true,
onPanResponderRelease:({nativeEvent})=>{
这是我的国家({
panHandlerReady:是的,
didUpdateThumb:错误
});
this.state.pan.flattOffset();
const{radius}=this.calcPolar(nativeEvent);
如果(半径<0.1){
这个.forceUpdate(“#ffffff”);
}
如果(此.props.onColorChangeComplete){
this.props.onColorChangeComplete(this.state.hsv);
}
}
});
};
componentDidUpdate(prevProps、prevState){
const{initialColor}=this.props;
if(initialColor&&this.state.toggleMeToforceUpdateInitialColor!==prevState.toggleMeToforceUpdateInitialColor){
此.forceUpdate(initialColor);
}
}
更新颜色和拇指位置(nativeEvent){
this.updateColor({nativeEvent});
this.state.pan.setValue({
x:-this.state.left+nativeEvent.pageX-this.props.thumbSize/2,
y:-this.state.top+nativeEvent.pageY-this.props.thumbSize/2
});
这是我的国家({
didUpdateThumb:对
});
}
onLayout=()=>{
这个.measureOffset();
};
measureOffset(){
/*
*常量{x,y,宽度,高度}=nativeEvent.layout
*onlayout值与measureInWindow不同
*x和y是到其上一个元素的距离
*但在测量中,它们是相对于窗口的
*/
此.self.measureInWindow((x,y,宽度,高度)=>{
const window=Dimensions.get('window');
常量absX=x%宽度;
常数半径=数学最小值(宽度、高度)/2;
常数偏移={
x:absX+宽度/2,
y:(y%窗高)+高度/2
};
这是我的国家({
抵消,
半径
高度,
宽度,
顶部:y%窗高,
左:ABX
});
this.forceUpdate(this.state.currentColor);
});
}
calcPolar(手势状态){
const{pageX,pageY,moveX,moveY}=gestureState;
常数[x,y]=[pageX | moveX,pageY | moveY];
常量[dx,dy]=[x-这个.state.offset.x,y-这个.state.offset.y];
返回{
度数:数学atan2(dy,dx)*(-180/数学PI),
//皮塔戈拉河r^2=x^2+y^2归一化
半径:Math.sqrt(dy*dy+dx*dx)/this.state.radius
};
}
出界(手势状态){
const{radius}=this.calcPolar(gestureState);
返回半径>1;
}
resetPanHandler(){
如果(!this.state.panHandlerReady){
返回;
}
this.setState({panHandlerReady:false});
this.state.pan.setOffset({
x:这个。状态。平移。x.。_值,
y:这个州,泛y值
});
this.state.pan.setValue({x:0,y:0});
}
calcCartesian(度,半径){
const r=radius*this.state.radius;//已规范化
常数rad=(数学π*度)/180;
常数x=r*Math.cos(rad);
常数y=r*Math.sin(rad);
返回{
左:this.state.width/2+x,
顶部:this.state.height/2-y
};
}
updateColor=({nativeEvent})=>{
常数{deg,radius}=这个calcPolar(nativeEvent);
控制台日志(“deg”);
对数(度);
控制台日志(“半径”);
控制台日志(半径);
常数hsv={h:deg,s:10*半径,v:100};
有限公司