Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 使用macruby,如何为核心动画事务设置完成块?_Macos_Core Animation_Osx Snow Leopard_Macruby - Fatal编程技术网

Macos 使用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

我用MacRuby做核心动画编程。我已经尝试了所有我能想到的和搜索过的东西(也许在“纯”macruby中做不到),但我不知道如何指定macruby代码块作为动画事务完成时调用的完成块。我知道还有其他方法可以做我想做的事情,但这对我来说似乎是最干净的,而且是可可中的事情。不管怎样,这就是我得到的:

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