鞋子是否在Mac上打破了窗户尺寸的想法,还是我疯了?

时间:2009-02-03 18:03:12

标签: ruby shoes

完全披露:我对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上没有实现?

2 个答案:

答案 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

但是堆栈仍然不会以您期望的方式调整大小。对此进行测试表明宽度已正确更新,但高度只能展开......