1
我遇到了用拉斐爾生成弧線曲線的問題。路徑和子路徑不會以同樣的方式管理弧線曲線
我在這裏創造一個減少的例子:http://jsfiddle.net/vaxilart/m6cHw/3/
正如你所看到的,得出的第一條路徑是不一樣的,第二個,和第二個是唯一的第一子路徑。
你知道爲什麼兩者都不同嗎?我怎麼能解決這個問題?
下面的代碼:
function drawpath(canvas, bg, pathstr, duration, attr, callback) {
var guide_path = bg;
var path = canvas.path(guide_path.getSubpath(0, 1)).attr(attr);
var total_length = guide_path.getTotalLength(guide_path);
var last_point = guide_path.getPointAtLength(0);
var start_time = new Date().getTime();
var interval_length = 50;
var result = path;
var run = function run() {
var elapsed_time = new Date().getTime() - start_time;
var this_length = elapsed_time/duration * total_length;
var subpathstr = guide_path.getSubpath(0, this_length);
path.attr({ path: subpathstr });
if (elapsed_time >= duration) {
if (callback != undefined) callback();
} else {
requestAnimationFrame(run);
}
};
run();
return result;
}
var sequence_path = [
[ "M", 200, 0 ],
[ "V", 200 ],
[ "A", 100, 100, 90, 0, 0, 300, 300 ],
[ "H", 400 ],
[ "A", 100, -100, 90, 0, 0, 500, 400 ],
[ "V", 500 ],
[ "A", 100, -100, 90, 0, 0, 400, 600 ],
[ "H", 200 ],
[ "A", 100, 100, 90, 0, 0, 100, 700 ],
[ "V", 800 ]
];
var paper = Raphael(10, 50, 700, 1000);
var bg = paper.path(sequence_path).attr({
stroke: 'white',
'stroke-width': 64,
'stroke-opacity': 1,
fill: 'none',
'fill-opacity': 0
});
drawpath(paper, bg, sequence_path, 3500, {
stroke: 'orange',
'stroke-width': 64,
'stroke-opacity': 1,
fill: 'none',
'fill-opacity': 0
});
太好了,非常感謝! – 2013-05-02 01:52:59