我今天遇到了一些问题,并认为我可以尝试堆栈溢出。我会简短而甜蜜(为了清楚起见,我删除了很多代码)。
我最近发现了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
}
我无法找到如何在我的对象中使用拖动功能使其可拖动。
嗯,就是这样。如果我发布这篇文章的方式有任何问题,我希望我已经清楚并原谅我了,但这是我的第一篇文章!
感谢所有愿意帮助我的人!
威尔逊
答案 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
警告:填写您的圈子/表单,因为如果不这样做,则必须单击精细边框才能移动它。