Macos 使用macruby,如何为核心动画事务设置完成块?
我用MacRuby做核心动画编程。我已经尝试了所有我能想到的和搜索过的东西(也许在“纯”macruby中做不到),但我不知道如何指定macruby代码块作为动画事务完成时调用的完成块。我知道还有其他方法可以做我想做的事情,但这对我来说似乎是最干净的,而且是可可中的事情。不管怎样,这就是我得到的:Macos 使用macruby,如何为核心动画事务设置完成块?,macos,core-animation,osx-snow-leopard,macruby,Macos,Core Animation,Osx Snow Leopard,Macruby,我用MacRuby做核心动画编程。我已经尝试了所有我能想到的和搜索过的东西(也许在“纯”macruby中做不到),但我不知道如何指定macruby代码块作为动画事务完成时调用的完成块。我知道还有其他方法可以做我想做的事情,但这对我来说似乎是最干净的,而且是可可中的事情。不管怎样,这就是我得到的: CATransaction.begin # start the transaction # # ...set up animation (works fine!) # CATransaction.se
CATransaction.begin # start the transaction
#
# ...set up animation (works fine!)
#
CATransaction.setCompletionBlock(...) <---- Here's the problem
CATransaction.commit # end the transaction
并被描述为:
“当此事务组的动画>完成时调用的块对象。块对象不接受任何参数,也不返回任何值。”
我尝试过不同的方法(但我只是在猜测):
我走远了吗?我需要做一个Objective-C包装器吗?还是不能做到
提前感谢好的,经过一段迂回的旅程,在分散的MacRuby笔记中搜索,我发现了如何做到这一点。当然,这是我早期尝试的解决方案之一诀窍是安装(MacRuby)BridgeSupport预览版,它与MacRuby安装是分开的,我以前不知道也不需要它。把它写在这里,希望能让人们不再为寻找一个显然与问题无关的答案而烦恼。下面是我的原始示例(上面)的“完整”列表,其中添加了缺少的部分:
CATransaction.begin # start the transaction
#
# ...set up animation (works fine!)
#
CATransaction.setCompletionBlock( Proc.new { puts "I'm done!" }) <-------
CATransaction.commit # end the transaction
CATransaction.begin#启动事务
#
#…设置动画(工作正常!)
#
setCompletionBlock(Proc.new{放置“我完成了!”)
CATransaction.setCompletionBlock({ some code })
CATransaction.setCompletionBlock(Proc.new { some code })
CATransaction.setCompletionBlock(lambda { some code })
CATransaction.setCompletionBlock(method(:aMethod))
...
def aMethod
...
end
CATransaction.begin # start the transaction
#
# ...set up animation (works fine!)
#
CATransaction.setCompletionBlock( Proc.new { puts "I'm done!" }) <-------
CATransaction.commit # end the transaction