gpt4 book ai didi

raphael - raphaeljs 中的集合不是真正的组?变换顺序

转载 作者:行者123 更新时间:2023-12-02 06:37:55 24 4
gpt4 key购买 nike

我对集合以及如何应用转换有疑问。我来自图形背景,所以我熟悉场景图以及正常的 SVG 组语法,但 Raphael 让我感到困惑。假设我有一个圆圈和一组,我想在其上应用变换。

circle = paper.circle(0,0.5)
set = paper.set()

如果我先添加圆圈,然后进行变换,它就可以了。

set.push circle
set.transform("s100,100")

做一个50半径的圆。但是,如果我颠倒顺序,

set.transform("s100,100")
set.push circle

不应用转换。

这似乎会破坏许多渲染和动画类型算法,您的组/变换保持您的关节状态,并且您向它们添加或删除对象,而不是每次都重新创建整个变换。文档中是否有一个选项我没有看到可以解决这个问题,或者为了简单而放弃了这个功能?缺少它似乎很奇怪,因为它在 SVG 本身的组层次结构中直接且容易地得到支持......我是否需要手动将集合中的转换应用于转换集合后添加的任何子项?

最佳答案

Raphael 中的集合只是简单的数组。

当你在片场执行一些 Action 时,Raphael 通过 for(...){} 遍历所有成员环形。

Raphael 不支持 SVG 组 <g></g>
更新 拉斐尔的代码:

// Set
var Set = function (items) {
this.items = [];
this.length = 0;
this.type = "set";
if (items) {
for (var i = 0, ii = items.length; i < ii; i++) {
if (items[i] && (items[i].constructor == elproto.constructor || items[i].constructor == Set)) {
this[this.items.length] = this.items[this.items.length] = items[i];
this.length++;
}
}
}
},

如您所见,所有项目都存储在 this.items中这是数组。

关于raphael - raphaeljs 中的集合不是真正的组?变换顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13995900/

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