Я использую MacRuby для программирования Core Animation. Я перепробовал все, что мог придумать, и искал повсюду (и, возможно, этого нельзя сделать в «чистом» макруби), но я не могу понять, как указать блок кода MacRuby в качестве блока завершения, который нужно вызвать когда транзакция анимации завершена. Я знаю, что есть другие способы сделать то, что я хочу, но это, кажется, самое чистое для меня и то, как все движется в Какао. Во всяком случае, это то, что у меня есть:
CATransaction.begin # start the transaction
#
# ...set up animation (works fine!)
#
CATransaction.setCompletionBlock(...) <---- Here's the problem
CATransaction.commit # end the transaction
Без строки 'setCompletionBlock' анимация работает нормально. Параметр этого метода установки определен (в Objective-C) как:
void (^)(void))block
И описывается как:
"объект блока вызывается, когда анимации для этой группы транзакций> завершены. Объект блока не принимает параметров и не возвращает значения."
Я пробовал разные вещи (но на данный момент я только догадываюсь):
CATransaction.setCompletionBlock({ some code })
CATransaction.setCompletionBlock(Proc.new { some code })
CATransaction.setCompletionBlock(lambda { some code })
CATransaction.setCompletionBlock(method(:aMethod))
...
def aMethod
...
end
Я далеко? Должен ли я сделать оболочку Objective-C какого-то рода, чтобы сделать это? Или это не может быть сделано?
Заранее спасибо