完全披露:我对Ruby很新。
以下代码似乎应该在调整应用程序的当前尺寸时更新para的文本。
Shoes.app do
stack do
@para = para
end
animate 1 do
@para.text = "%d x %d" % [ app.width, app.height]
end
end
但它永远不会改变。我知道在实际调整大小操作期间动画会被阻止,但是当你放开鼠标时它会赶上。那么,我做错了什么还是仅仅在OS X上没有实现?
答案 0 :(得分:2)
我不太了解鞋子,但看起来这是改变应用程序尺寸的问题。您的动画确实会更新,但应用的宽度和高度不会更新。以下代码显示它会进行动画处理(帧编号将更改):
Shoes.app do
stack do
@para = para
end
animate 1 do |f|
@para.text = "%d x %d #{f}" % [ app.width, app.height]
end
end
进一步看来,当您调整窗口大小时,鞋子附带的其他示例程序不起作用。 simple-bounce.rb,使用Shoes徽标激活一个弹跳球,即使在调整窗口大小的情况下,也会坚持在原始盒子中弹跳。
看起来这是鞋子代码中的一个错误。
答案 1 :(得分:0)
我查看了Shoes源代码,看起来它没有捕获本机窗口调整大小事件来更新App对象Shoes内的变量(至少对于OS X而言)。因此,当Shoes向Cocoa发送调整大小事件时,他们没有收到另一个方向。
与此同时,这样的事情会更好一点:
Shoes.app do
@stack = stack :width => 1.0, :height => 1.0 do
@para = para
end
animate 1 do |f|
@para.text = "%d x %d #{f}" % [ @stack.width, @stack.height ]
end
end
但是堆栈仍然不会以您期望的方式调整大小。对此进行测试表明宽度已正确更新,但高度只能展开......