Raphael js拖入javascript对象

时间:2013-07-24 16:28:20

标签: javascript object raphael drag

我今天遇到了一些问题,并认为我可以尝试堆栈溢出。我会简短而甜蜜(为了清楚起见,我删除了很多代码)。

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

好的,它有效,所有功能都被正确调用! 但! 我希望我的移动,启动,向上功能在一个对象内而不是在主页面中 所以 这是我的下一个代码

<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

}

我无法找到如何在我的对象中使用拖动功能使其可拖动。

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

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

威尔逊

2 个答案:

答案 0 :(得分:0)

myobject内,this变量指向此对象,而不是指向Raphael圈。由于myobject没有drag函数,代码会产生错误。为了使它工作,你必须参考必须被拖动的Raphael对象,即

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

答案 1 :(得分:0)

很好,@ Hubert OG是对的,但我也必须改变我宣布我的功能的方式

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

警告:填写您的圈子/表单,因为如果不这样做,则必须单击精细边框才能移动它。