【发布时间】:2015-04-29 03:01:12
【问题描述】:
请考虑这个简单的 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 的唯一 instance(让我这样称呼它)按应有的方式显示。
但现在假设我更改了代码,所以我有 b 的 2 个实例:
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)?
任何帮助将不胜感激。
【问题讨论】: