我最近重新发现了 Ruby Shoes 框架,它是一个小型图形框架,使用 Ruby 内部 DSL 功能,更具体地说,这里是 Shoes4。
其中一个示例(位于 ./samples 中)给我留下了特别深刻的印象:sample13.rb,我无法完全理解。
运行此示例,您将获得一个带有名为“new”的按钮的画布。每次按下此按钮时,都会将一个新图形(在程序中命名为框)添加到画布(形状和颜色随机)。但更重要的是,您可以在之后单击这些数字,然后将它们移开。
代码非常短:
Shoes.app :width => 300, :height => 300 do
COLORS = Shoes::COLORS
i = 45
button 'new' do
i += 5
box = rand(2) == 0 ? rect(i, i, 20) : oval(i, i, 20)
box.style :fill => send(COLORS.keys[rand(COLORS.keys.size)])
@flag = false
box.click{@flag = true; @box = box}
box.release{@flag = false}
end
motion{|left, top| @box.move(left-10, top-10) if @flag}
end
我想解释一下这段代码是如何工作的。
似乎创建的每个图形都存储在某个地方,但究竟在哪里?有没有办法访问新创建的人物集合?
而且,如图所示,图中还添加了click和release等方法。一般来说,鞋子中的每个对象都是这种情况吗(我在鞋子网站上找不到)?