2

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

4

2 回答 2

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

进一步看来,当您调整窗口大小时,Shoes 附带的其他示例程序不起作用。simple-bounce.rb,它用鞋子标志为一个弹跳的球制作动画,即使在调整窗口大小时也坚持在原始盒子中弹跳。

看起来这是鞋子代码中的错误。

于 2009-02-03T22:41:08.337 回答
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

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

于 2009-03-08T15:01:10.523 回答