使用Raphael保留集合中多个项目的缩放比例

时间:2012-10-24 16:40:21

标签: javascript svg raphael

我有一组几种形状,每种形状都以不同的速率缩放。

当使用

将集转换为另一个点时
set.transform("tp1,p2")

形状重新缩放到正常尺寸。对于每个缩放的形状 在原始尺寸的不同比例,我不能给出规模 set.transform的选项。

如何在transform()期间保留set中每个项目的缩放?

我在代码中的问题:

http://jsfiddle.net/XHr4H/

1 个答案:

答案 0 :(得分:1)

Raphael处理这个问题的不完美方法是允许转换指令在转换序列之前(使用“directive ...”)或附加到转换序列(使用“... directive”)。在您的情况下,实现您所需效果的最简单方法是在setTimeout函数中添加所需的相对变换。

var paper = Raphael("paper", 200, 200);

var s = paper.set(),
    r = paper.rect(0,0,30,30).attr({"fill":"green"}).transform("t27,30s0.2"),
    r2  = paper.rect(40,0,30,30).attr({"fill":"red"}).transform("t27,30s0.4");
s.push(r,r2);
setTimeout(function(){
    s.transform("t100,150...");  // here 'tis
}, 2000);

变换(“t100,150 ...”)基本上将所需的translate插入到集合中每个元素的变换字符串的开头。因此,r的变换累计评估为“t127,180s0.2”,r2变为“t127,180s0.4”。