スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

RubyCocoaでアニメーション:最初のアニメーションプログラム

長いので、本文は続きを読むで
RubyCocoaでアプリケーションを作る手順はチュートリアルを参照、これを一通りやってみて感触をつかんでおくとわかりやすい。
 ここでは、チュートリアルとは違うところを書いておく。最初にAppController.rbのファイルを作るところまでは一緒ね。そして、その中身はこのようにしておく。

require 'osx/cocoa'
OSX.require_framework 'QuartzCore'

class AppController < OSX::NSObject
ib_outlet :view
ib_action :doAnimation
end


二行目の
OSX.require_framework 'QuartzCore'

というのが、CoreAnimationを使うための設定。そして
ib_outlet :view
ib_action :doAnimation

がこれから作るGUIとのインターフェースの部分だ。ここまで書いたら、いったんファイルを保存して、MainMenu.nibをダブルクリックしてインターフェースビルダーを起動する。AppControllerオブジェクトを作るところまでは一緒なのだが、その後はアニメーションを表示するためのCustomViewとアニメーションを実行するためのButtonを配置しよう。
配置し終わった画面はこんな感じになる。

GUIの作成


配置が終わったら、AppControllerとCustomView、ButtonとAppControllerの間にコネクションをつなぐ。これで一通りGUIができたので、SaveしてXCodeに戻ろう。

こんどはAppController.rbに初期化のコードを書く。初期化はawakeFromNibというメソッドの中で行なう。
def awakeFromNib
bitmapImage = OSX::NSBitmapImageRep.imageRepWithContentsOfFile_
('/Users/takayukiu/Documents/P1000551.JPG')
image = bitmapImage.CGImage()

layer = OSX::CALayer.layer()
layer.contents = image
layer.frame = OSX::CGRectMake(0,0,256,160)

black=OSX::CGColorCreateGenericRGB(0,0, 0,1.0)
backgroundLayer=OSX::CALayer.layer()
backgroundLayer.backgroundColor=black

backgroundLayer.addSublayer_(layer)

@view.setLayer_(backgroundLayer)
@view.setWantsLayer_(true)
end

 やってることは、こっちCoreAnimationの解説記事と同じ。違うのはRubyCocoaの場合、Cocoaの機能を使用するときには先頭に'OSX::'というのを付けるのと、YESの代わりにtrueを使っていることくらいだ。
 あと、画像ファイルは適当なものに変えている。

ここまで終わったら、今度はアニメーションを動かすコードを書く。ib_actionで宣言しておいた、doAnimationを作っていこう。
def doAnimation(sender)
layer = @view.layer.sublayers.objectAtIndex_(0)
layer.position =OSX::CGPointMake(400,300)
end

 このコードもこちらと基本的には変わらない。Objective-Cに慣れていない人は、こっちの方がわかりやすいかもしれない。

 ここまで書いたら、ビルドして実行してみよう。ボタンをクリックすれば、画像が右上に向かって動くはずだ。
スポンサーサイト

Comment

Post comment

Secret

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。