2

我今天遇到了一个小问题,我想我可以尝试堆栈溢出。我会简短而甜蜜(我删除了很多代码以明确这一点)。

我最近发现了 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

}

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

嗯,就是这样。如果我发表这篇文章的方式有任何问题,我希望我已经清楚并原谅我,但这是我的第一篇!

感谢所有愿意帮助我的人!

威尔逊

4

2 回答 2

0

在内部myobjectthis变量指向这个对象,而不是拉斐尔圆。由于myobject没有drag功能,代码会产生错误。要使其工作,您必须引用必须拖动的 Raphael 对象,即

function myobject(vx,vy,vr) {
    ...
    this.circle = paper.circle(x,y,r);    
    ...
    this.circle.drag(move,start,up);
    ...
}
于 2013-07-24T17:18:12.960 回答
0

很好,@Hubert OG 是对的,但我还必须改变我声明函数的方式

var start()=function to this.start() = function

警告:填写你的圈子/表格,因为如果你不这样做,你必须点击细边框来移动它。

于 2013-07-24T19:40:03.023 回答