我有一個動畫圓,看起來像這樣改變的動畫圓的大小: 如何使用的onclick拉斐爾JS
藍色部分倒計時,因此,例如從全不了了之在10秒。橙色的圓圈只是一個圓圈。但是我希望當你點擊它時,圈子會變小。所以我爲圈子做了一個onclick事件。
circleDraw.node.onclick = function() {
circleDraw.animate({
stroke: "#E0B6B2",
arc: [100, 100, 100, 100, 100]
}, 500);
circleDraw.toFront();
};
這是有效的,我已經爲兩個圓圈做了它們,但它們都變小了,但是在500毫秒後,藍色圓圈又變大了,因爲藍色圓圈的計時器得到了應該更大的參數。
circleDraw.animate({
arc: [100, 100, 0, 100, 500]
}, 10000);
由於藍色圓圈計數10秒,它會自動變大。如何讓兩個圓圈更小但保持定時器倒計時?
我正在考慮停止藍色圓圈的動畫,並保存動畫剩餘的mili秒再次縮小,然後再用剩下的秒數開始動畫,但我不知道該怎麼做。但是,也許我正在尋找錯誤的方向,並且我必須讓它與衆不同。
謝謝。
我的所有代碼:
/************************************************************************/
/* Raphael JS magic
*************************************************************************/
var drawTheCircleVector = function(xloc, yloc, value, total, R) {
var alpha = 360/total * value,
a = (90 - alpha) * Math.PI/180,
x = xloc + R * Math.cos(a),
y = yloc - R * Math.sin(a),
path;
if (total == value) {
path = [
["M", xloc, yloc - R],
["A", R, R, 0, 1, 1, xloc - 0.01, yloc - R]
];
} else {
path = [
["M", xloc, yloc - R],
["A", R, R, 0, +(alpha > 180), 1, x, y]
];
}
return {
path: path
};
}; /************************************************************************/
/* Make the circles
*************************************************************************/
var timerCircle = Raphael("timer", 320, 320);
var circleBg = Raphael("backgroundCircle", 320, 320);
timerCircle.customAttributes.arc = drawTheCircleVector
circleBg.customAttributes.arc = drawTheCircleVector
/************************************************************************/
/* draw the circles
*************************************************************************/
var drawMe = circleBg.path().attr({
"fill": "#FF7F66",
"stroke": 0,
arc: [160, 160, 100, 100, 140]
});
var clickOnes = true;
drawMe.node.onclick = function() {
if (clickOnes == true) {
circleDraw.animate({
arc: [100, 100, 0, 100, 100]
}, 500);
circleDraw.toFront();
drawMe.animate({
arc: [100, 100, 100, 100, 100]
}, 500);
circleDraw.toFront();
clickOnes = false;
} else {
circleDraw.animate({
arc: [160, 160, 0, 100, 150]
}, 500);
circleDraw.toFront();
drawMe.animate({
arc: [160, 160, 100, 100, 140]
}, 500);
circleDraw.toFront();
clickOnes = true;
}
};
// arc: [Xposition, Yposition, how much 1 = begin 100 = end, ? = 100, 150];
/************************************************************************/
/* Draw the circle
*************************************************************************/
var circleDraw = timerCircle.path().attr({
"stroke": "#2185C5",
"stroke-width": 10,
arc: [160, 160, 100, 100, 150]
});
circleDraw.animate({
arc: [160, 160, 0, 100, 150]
}, 9000);
window.setInterval(function() {
goToNextStopGardensPointBus210()
}, 9000);
這裏是我的代碼計時器的作品,如果你點擊圓圈就會變小,但如果你點擊它,積屑瘤cirlce完成之前將再次成爲大。
UPDATE 工作的是我對的jsfiddle了版本, http://jsfiddle.net/hgwd92/2S4Dm/
首先我認爲使用Raphael的方法來綁定事件是可取的(element.click(function(){// Do stuff}))。第二...你可以發佈你的代碼嗎?如果我看到持有圖片,對我來說可能很容易。 – limoragni 2013-05-06 13:26:39
同意,請使用circleDraw.click(function(){...}); – 2013-05-06 14:10:10
我已經添加了我的代碼。我希望你能幫助我:) – hgwd92 2013-05-08 00:45:39