请考虑这个简单的 rebol2 代码来说明我的问题:
REBOL []
a: make face [
offset: 0x0
color: yellow
size: 20x20
]
b: make face [
offset: 0x0
color: red
size: 60x60
pane: reduce [
make a [offset: 0x0]
make a [offset: 10x10]
make a [offset: 10x20]
]
]
view layout [
box 200x200 white with [
pane: reduce [
make b [offset: 0x30] ;; one 'instance' of b
]
]
]
这里的要点是布局(或面)能够在其窗格块内显示一堆面,以便可以多次创建同一个面(b
在这种情况下)。显示的代码运行良好,并且唯一的实例(让我这样称呼它)按b
原样显示。
但是现在假设我更改了代码,所以我有 2个实例:b
view layout [
box 200x200 white with [
pane: reduce [
make b [offset: 0x30]
make b [offset: 0x10]
]
]
]
此时我得到错误
** Script Error: Face object reused (in more than one pane): none
** Where: view
** Near: show scr-face
if new [do-events]
从这里我推测的消息来看,这张脸b
正在以某种方式被重复使用,并且完全弄乱了我想要实现的目标。我对此进行了大量研究,在某些时候我发现可以通过克隆(使用make
)要传递给的面来绕过它pane
;这就是我认为我正在做的事情,但根本没有成功。
鉴于这种情况,我的问题是:我该如何解决这个问题?rebol2 是否可以提供这种“面部实例化”,或者最好在 rebol2 之外尝试其他东西(也许是 rebol3)?
任何帮助将不胜感激。