我有一个问题是删除克隆的最后一条路径 我想,当我点击其克隆出现的一条路径时,当我点击另一条路径时,克隆的最后一条路径消失或动画缩放到原始视图以删除它并创建另一条路径。有人能告诉我这是怎么做到的吗?
我的代码:
var paper = Raphael("paper", 1000, 1000);
var mg = {};
mg.rg1a = this.paper.path("..." ).initZoom();
mg.rg2a = this.paper.path("..." ).initZoom();
mg.rg3a = this.paper.path("..." ).initZoom();
for (var state in mg) {
mg[state].setAttr({
fill: "#c7c6c5",
stroke: "#CFCFCF",
"stroke-width": 1
});
(function (st, state) {
st[0].style.cursor = "pointer";
mg[state].click(function(){
var temp = mg[state].clone();
temp.animate({'transform':"s2 2"}, 500);
temp.setAttr({
fill: "#FF6600",
stroke: "#FFFB00",
"stroke-width": 1 });
});
})(mg[state], state);
}
答案 0 :(得分:1)
我可以为你解决这个问题,但我不确定这会有所帮助。
在你解决问题之前,你已经在小提琴中犯了一些错误,需要修复。
1 Raphael没有名为setAttr()的函数。它 有一个名为attr()的函数。
[2]您正在使用转换来扩展克隆。拉斐尔2.0中有变形,但是你的小提琴正在使用raphael 1.5.2。可能你只是错误地设置了它,但我想我会指出它。
修复您的特定问题非常简单。您只需要保留对您创建的克隆的引用。每次单击某个内容时,请检查该引用是否指向某个对象。如果是,则使用.remove()删除它。这样你就可以在创建新克隆之前对其进行核对。
如果您真的卡住了,请回复,我会告诉您我创建的小提琴的工作版本。先试试吧。
<磷>氮PS。 firebug和webdeveloper是你应该使用的两个浏览器扩展,如果你还没有这样做的话。这需要猜测很多错误。
因为你很好地问了here's你修改过的小提琴。我添加了一个名为cloneHolder的变量。每当您单击时,检查cloneHolder是否引用任何内容,如果是,则使用cloneHolder.remove()将其删除。如果您愿意,可以在删除之前更改代码以使克隆消失。