所以我有一些代碼繪製一個路徑和一個圓圈。每次啓動該功能時,該圓都在該路徑上呈動畫形式。我只想創建10條路徑,每條路徑都有自己的圓形,可以在每條路徑上進行動畫處理。當我簡單地執行該函數10次時,路徑生成得很好,但是圓形都沿同一條單一路徑生成。我在這裏做錯了什麼?這裏是創建for(i = 0)循環的最佳方法嗎?如何在JavaScript中「獨一無二地」重複函數n次?
您可以查看我的代碼上jfiddle,或者看看在這裏:
function commerce() {
Raphael("commercebounce", function() {
var r = this;
function pathfade() {
var pa = .1,
pb = .4,
pc = [0, 2],
pd = [50, 300],
pe = [150, 800],
pf = [150, 350],
pg = pd[0] + Math.random() * (pd[1] - pd[0]),
ph = pe[0] + Math.random() * (pe[1] - pe[0]),
pi = pf[0] + Math.random() * (pf[1] - pf[0]),
bd = .1,
be = .9,
pathspot = bd + Math.random() * (be - bd),
colours = ["215,10,45", "115,115,115"],
stroke = ["", "- "];
opacity = pa + Math.random() * (pb - pa), colour = "rgb(" + colours[Math.round(Math.random())] + ")", strokeW = pc[Math.round(Math.random())];
pj = r.path("M 0 " + pg + " C 0 " + pg + " " + (ph - 100) + " " + pg + " " + ph + " 400 M " + ph + " 400 C " + ph + " 400 " + (ph + 100) + " " + pg + " 960 " + pi).attr({stroke: colour,"stroke-dasharray": stroke[Math.round(Math.random())],"opacity": 0});
bh = r.circle(0, 0, 7, 7).attr({"stroke-width": this.strokeW,stroke: colour,"stroke-opacity": this.opacity,fill: "none","fill-opacity": 0}).onAnimation(function() {
var t = this.attr("transform")})
leng = pj.getTotalLength();
r.customAttributes.along1 = function (v) {
var point = pj.getPointAtLength(v * leng);
return {
transform: "t" + [point.x, point.y] + "r" + point.alpha
}
};
return bh.attr({along1:0}), bh.animate({along1:pathspot},300), pj.animate({opacity:opacity},300), pj, bh
}
pathfade();//how do i repeat this function n times?
});
}
commerce();
你需要做的「路徑」你在談論的功能pathFade的參數。然後,你要做的就是循環你想要調用不同路徑的路徑的次數。我不確定路徑的價值是什麼,但它可能是pc,pd,pe,pf變量。 –
另外,您需要將pathFade分解爲多個函數。你有太多的東西塞進了一個讓它很難調試的函數。 –
你認爲你能幫助我嗎?我一直在這個問題上花費了數小時的時間,但它仍然沒有解決 –