gpt4 book ai didi

javascript - 使用背景图像对 Raphaël.js 形状进行动画处理

转载 作者:行者123 更新时间:2023-12-03 11:46:59 25 4
gpt4 key购买 nike

我正在尝试使用 Raphaël.js 对带有背景图像的矩形进行动画处理,请参阅 this demo 。虽然矩形大小已设置为 60x60 并且图像大小绝对为 60x60,但图像不适合矩形!

对我来说,这只是在我使用 animate() 函数时发生的,如果没有该函数,所有图像都完美地适合矩形。

为什么会发生这种情况以及如何解决该问题?

var r = Raphael('canvas', 500, 500);
r.canvas.style.backgroundColor = '#ccc';

var st = r.set();
st.push(
r.rect(100,100,60,60),
r.rect(180,100,60,60),
r.rect(100,200,60,60)
);
st.attr({fill:"url(http://cdn2.image-tmart.com/prodimgs/1/13010995/Rose-Bouquet-of-Peach-Heart-Home-Decoration-Simulation-Red-Inside-Pink-Outside_3_60x60.jpg?1363942767)", "stroke-width": 0});

st.animate({transform: "t200,100"}, 500);

最佳答案

在 Raphael.js Element.attr({fill: 'url(...)'})创建平铺 <pattern>填充形状和文本。然而,Raphael.js 的目标是兼容 SVG 和 VML(IE 8 支持),所以在我看来它做了一些妥协,比如自动调整 <pattern> 的位置。 。因此,当您翻译<rect>时,<pattern>被反向翻译,因此它们看起来固定在 Canvas 内。

使用Paper.image(src, x, y, w, h)可能会以相同的视觉行为解决您的问题。因为<image> Raphael.js 不会隐式更改坐标。像这样:

var r = Raphael('canvas', 500, 500);
r.canvas.style.backgroundColor = '#ccc';

var st = r.set();
st.push(
r.image(null, 100,100,60,60),
r.image(null, 180,100,60,60),
r.image(null, 100,200,60,60)
);

st.attr({src:"http://cdn2.image-tmart.com/prodimgs/1/13010995/Rose-Bouquet-of-Peach-Heart-Home-Decoration-Simulation-Red-Inside-Pink-Outside_3_60x60.jpg?1363942767"});

st.animate({transform: "t200,100"}, 500);

我还推荐Snap.svg ,与Raphael.js来自同一作者,但它仅适用于SVG并且副作用较小。

关于javascript - 使用背景图像对 Raphaël.js 形状进行动画处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26010683/

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