Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.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 - Fatal编程技术网

Javascript 将对象数组传递给绿体';贝塞尔误差

Javascript 将对象数组传递给绿体';贝塞尔误差,javascript,Javascript,我想将先前定义的x/y坐标数组传递给greensock bezier插件,如下所示: var ball = document.querySelector('#ball') var startCircle = document.querySelector('#startPoint') var controlCircle = document.querySelector('#controlPoint') var endCircle = document.querySelector('#endPoi

我想将先前定义的x/y坐标数组传递给greensock bezier插件,如下所示:

var ball = document.querySelector('#ball')

var startCircle = document.querySelector('#startPoint')
var controlCircle = document.querySelector('#controlPoint')
var endCircle = document.querySelector('#endPoint')

var startPoint = { x: 100, y: 100 }
var controlPoint = { x: 50, y: 200 }
var endPoint = { x: 200, y: 200 }

TweenMax.set(ball, startPoint)
TweenMax.set(startCircle, startPoint)
TweenMax.set(endCircle, endPoint)
TweenMax.set(controlCircle, controlPoint)

TweenMax.to(ball, 1, {
  repeat: -1,
  bezier: {
    type: "quadratic",
    values: [
      startPoint,
      controlPoint,
      endPoint
    ]
  } 
})
我得到这个错误

TypeError: undefined has no properties[Learn More]
TypeError: undefined has no properties[Learn More]
invalid css tween value: [object Object]
TypeError: this._beziers[d] is undefined[Learn More]
如果我将
bezier
对象中的
更改为文字,(比如
值:[{x:1,y:2},{x:3,y:4}]
代码工作。 有人知道为什么吗?你也可以在codepen上查看代码:


编辑好的,我找到了一个答案。TweenMax.set显然改变了对象。因此,当我在传递到TweenMax.set之前复制那些startPoint、controlPoint和endPoint对象时,代码工作正常。

我检查了你的代码笔,并在控制台上记录了你的一个对象:

TweenMax.set(endCircle, endPoint)
TweenMax.set(controlCircle, controlPoint)

console.log(startPoint);

/*TweenMax.to(ball, 1, {
  repeat: -1,
我明白了:

{css:{x:100,y:100}}

可能是您的
tweenmax.set
方法正在改变对象。这可以解释为什么传递文本是有效的。

Ha,您刚刚在我编辑的同时回答了问题。谢谢您的帮助!