Paper.js中hue属性未定义问题求助:移除fillColor赋值后报错
解决“hue属性未定义”报错的方案
你遇到的问题核心在于:当按下的不是a或b键时,newCircle没有被设置fillColor属性,导致后续未贴全的代码尝试访问newCircle.fillColor.hue时,因fillColor为undefined,进而抛出“hue属性未定义”的错误。
具体解决思路与方案
- 给
newCircle设置默认填充色:在条件判断之外先初始化fillColor,确保无论按下什么键,这个属性都不会是undefined。 - 或者限制圆的创建场景:如果仅需要在按下
a/b键时创建圆,就把圆的创建逻辑放到对应条件分支内,避免生成无填充色的空圆。
修改后的代码示例(方案一:设置默认色)
var circles = []; function onKeyDown(event) { var maxPoint = new Point(view.size.width, view.size.height); var randomPoint = Point.random(); var point = maxPoint * randomPoint; var newCircle = new Path.Circle(point,500); // 先设置默认填充色,避免fillColor为undefined newCircle.fillColor = "#95a5a6"; if(event.key === "a"){ bubbles.play(); newCircle.fillColor = "#2c3e50"; } else if(event.key === "b"){ newCircle.fillColor = "#2c3e50"; // 补全你原代码未写完的颜色值 } circles.push(newCircle); }
修改后的代码示例(方案二:限制创建场景)
var circles = []; function onKeyDown(event) { var maxPoint = new Point(view.size.width, view.size.height); var randomPoint = Point.random(); var point = maxPoint * randomPoint; if(event.key === "a"){ bubbles.play(); var newCircle = new Path.Circle(point,500); newCircle.fillColor = "#2c3e50"; circles.push(newCircle); } else if(event.key === "b"){ var newCircle = new Path.Circle(point,500); newCircle.fillColor = "#2c3e50"; circles.push(newCircle); } // 非a/b键时不创建圆,自然不会触发后续hue属性访问的错误 }
内容的提问来源于stack exchange,提问作者Tyler Johnson
相关产品推荐
相关产品推荐

