2012-05-24 32 views
0

我有一個問題,以刪除克隆的最後一個路徑。
我想,當我點擊其克隆出現的一條路徑,並且當我點擊另一條路徑時,克隆的最後一條路徑消失或者動畫縮放到原始位置以移除它,並創建另一條路徑。有人可以告訴我這是怎麼回事?Raphaël地圖刪除最後一個克隆創建

我的代碼:

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

是否有可能在jsfiddle.net中創建示例? – Neil

+0

這裏是鏈接,但沒有出現:http://jsfiddle.net/VYXCL/ – kimpak

+0

對不起,但我不能讓你的小提琴工作,我認爲你需要看看第一個 – Neil

回答

1

我可以解決這個給你,但我不知道這會是有益的。

在解決問題之前,您已經在小提琴中犯了一些錯誤,需要修復這些錯誤。

1 Raphael沒有一個名爲setAttr()的函數。它確實有有一個叫做attr()的函數。

[2]您正在使用轉換來擴展您的克隆。在Raphael 2.0中出現了變形,但你的小提琴使用的是raphael 1.5.2。可能你只是錯誤地設置了它,但我想我會指出它。

解決您的特定問題非常簡單。您只需持有對您創建的克隆的引用。每次點擊某個東西時,檢查引用是否指向一個對象。如果是,則使用.remove()將其刪除。這樣你就可以在創建新克隆之前對舊克隆進行加載。

如果你是真的卡住,回覆,我會給你你創建的小提琴的工作版本。儘管先給它一個。

N.

PS。螢火蟲和web開發者是你應該使用的兩個瀏覽器擴展,如果你還沒有做。它需要猜出很多錯誤。


既然你問得好,here's你的修改小提琴。我已經添加了一個名爲cloneHolder的變量。無論何時單擊,您都會檢查cloneHolder是否引用任何內容,如果是,則使用cloneHolder.remove()將其刪除。如果你喜歡,你可以改變代碼以使克隆消失。

+0

好的,謝謝Amadan,我通過添加所需的庫來修復bug,你可以在http://jsfiddle.net/VYXCL/6/看到它。但我並沒有完全按照你對克隆的引用的解釋。我怎麼做? – kimpak

+0

查看原始答案的示例。 – amadan

+0

是的,沒錯!感謝您的幫助 – kimpak