gpt4 book ai didi

javascript - raphael viewbox 动画缩放

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:51:11 24 4
gpt4 key购买 nike

我正在使用 javascript 和 Raphael 库构建一种 javascript map 。单击时我可以放大一个对象,但我希望它是动画的(比如慢慢潜入等等)。有没有办法在不重新发明轮子的情况下这样做?

最佳答案

没有理由不能为 svg 对象的 View 框设置动画——Raphael 根本没有提供这种开箱即用的功能。但是,创建插件相当简单。例如:

Raphael.fn.animateViewBox = function animateViewBox( x, y, w, h, duration, easing_function, callback )
{
var cx = this._viewBox ? this._viewBox[0] : 0,
dx = x - cx,
cy = this._viewBox ? this._viewBox[1] : 0,
dy = y - cy,
cw = this._viewBox ? this._viewBox[2] : this.width,
dw = w - cw,
ch = this._viewBox ? this._viewBox[3] : this.height,
dh = h - ch,
self = this;;
easing_function = easing_function || "linear";

var interval = 25;
var steps = duration / interval;
var current_step = 0;
var easing_formula = Raphael.easing_formulas[easing_function];

var intervalID = setInterval( function()
{
var ratio = current_step / steps;
self.setViewBox( cx + dx * easing_formula( ratio ),
cy + dy * easing_formula( ratio ),
cw + dw * easing_formula( ratio ),
ch + dh * easing_formula( ratio ), false );
if ( current_step++ >= steps )
{
clearInterval( intervalID );
callback && callback();
}
}, interval );
}

安装此插件后实例化的任何纸张都可以使用与 Raphael 内置动画方法完全相同的方法使用 animateViewBox。例如……

var paper = Raphael( 0, 0, 640, 480 );
paper.animateViewBox( 100, 100, 320, 240, 5000, '<>', function()
{
alert("View box updated! What's next?" );
} );

演示上演 here .

关于javascript - raphael viewbox 动画缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13340509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com