我仍然把头缠在封闭处。
我正在使用Paper.js
和paperscript
开展项目。我正在尝试创建具有距离度量的线段,该距离度量在移动时保持在段的中心。
不是简单地编写代码来分别移动中心和线(这很简单),我一直在看是否有可能移动线并让中心跟随。
事实证明这很困难。它可能有几个问题,但是现在this
是我当前的bugaboo。他们现在设置它的方式,this
在调用函数时引用全局对象,这当然不是我想要的。但是我无法弄清楚如何创造我想要的东西,这当然是来自“重量”的一个参考资料。元素到'线'元件。
我该如何正确地做到这一点?
edge = new Group({
children: [
new Path.Line({
from: gn.position,
to: event.point,
strokeColor: 'maroon',
name: 'line'
}),
new PointText(function (){
return {
position: function () {
return this.previousSibling.position;
}(),
content: function () {
return this.previousSibling.length.toString();
}(),
name: 'weight'
}
}())
]
});
答案 0 :(得分:2)
为了提供更好的结构,并绑定this
引用,您可以开始定义构造函数:
function PointTextContent(name) {
this.position = function () {
return this.previousSibling.position;
}.bind(this);
this.content = function () {
return this.previousSibling.length.toString();
}.bind(this);
this.name = name;
PointText.call(this, this);
}
PointTextContent.prototype = PointText;
然后更改代码以实例化新对象。
edge = new Group({
children: [
new Path.Line({
from: gn.position,
to: event.point,
strokeColor: 'maroon',
name: 'line'
}),
new PointTextContent('weight')
]
});
注意:我更改了position
和content
成为函数,我发现它们会立即在原始代码中调用。