我今天有一个小问题,以为我可以尝试堆栈溢出。我会简短有趣(我删除了很多代码以使其清楚)。

我最近发现了raphaeljs,我喜欢它。
我可以拖动一些圆圈,它的工作原理如下:

工作脚本:

<script>
var paper = Raphael(100,100,500,500);
var circ = paper.circle(50,50,10)

var start = function(){ };
var move = function(dx,dy)
{
    this.attr({cx: this.ox + dx, cy: this.oy + dy});
};
var up = function(){};
circ.drag(move,start,up);
<script>


好的,它可以正常工作并且所有功能都可以正确调用!
但!
我希望我的move,start,up函数位于对象内部而不在主页中
所以
这是我的下一个代码

<script src="myobject.js"></script>
<script>
    var paper = Raphael(100,100,500,500);
    var myobj = new myobject("12","12","6");
<script>


myobject.js的内容:

function myobject(vx,vy,vr)
{
    var x,y,r;
    x=vx;y=vy;r=vr
    paper.circle(x,y,r);
    var start = function(){};
    var move = function(dx,dy){};
    var up = function(){};

    this.drag(move,start,up);  // error here this line crash

}


我找不到如何使用对象内部的拖动功能使其可拖动的方法。

好吧,就是这样。我希望我已经清楚了,请原谅我发帖的方式有什么问题,但这是我的第一篇!

感谢所有将帮助我的人!

威尔逊

最佳答案

myobject中,this变量指向该对象,而不是Raphael圆。由于myobject没有drag函数,因此代码会产生错误。要使其正常工作,您必须引用必须拖动的Raphael对象,即

function myobject(vx,vy,vr) {
    ...
    this.circle = paper.circle(x,y,r);
    ...
    this.circle.drag(move,start,up);
    ...
}

10-05 20:37
查看更多