こんにちわ。ご無沙汰ですね(;^_^A

さて今日からは、ゲームの操作のところを作っていきましょう。

今日もコードをざっと載せてみて、とりあえずこんな風に動く!

って確認してから、次回に説明する!というカンジでいきたいと思います。

まず、PlayViewController.hに変数を2つをメソッド1つ追加します。


@interface PlayViewController : UIViewController {

IBOutlet UIImageView *backView;
IBOutlet UIImageView *frontView;
IBOutlet UILabel *scoreLabel;
IBOutlet UILabel *timeLabel;

PlayState state;
BOOL isFinished;

CALayer *movingLayer1;
CALayer *movingLayer2;

}

- (BOOL)swapLayers;




↑赤いところが今回追加したところ。

実際実装するとこんな感じです。

$無知の状態からiPhoneアプリ開発に挑んでみる-2011-5-2-1


次にPlayViewController.mに以下をまるごと追加します。
追加する場所は@endの手前でいいでしょう(‐^▽^‐)


- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
if(isFinished || state != PlayStateChoose){
return;
}

UITouch *aTouch = [touches anyObject];
CGPoint pos = [aTouch locationInView:self.view];
pos = [backView.layer convertPoint:pos toLayer:backView.layer.superlayer];

CALayer *layer = [backView.layer hitTest:pos];

if(![layer.name hasPrefix:@"panel"] || movingLayer1 && movingLayer1 == layer){
return;
}

// 2枚目のパネルの選択
if (movingLayer1) {
[movingLayer1 removeAnimationForKey:@"rotation"];
movingLayer2 = layer;

if (![self swapLayers]) {
movingLayer1 = nil;
movingLayer2 = nil;
}
}

// 最初のパネルの選択
if (!movingLayer1) {
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
animation.duration = 1.0;
animation.repeatCount = HUGE_VALF;
animation.fromValue = [NSNumber numberWithFloat:0.0f];
animation.toValue = [NSNumber numberWithFloat:M_PI*2];
[layer addAnimation:animation forKey:@"rotation"];
movingLayer1 = layer;
}

}
- (BOOL)swapLayers {
return NO;
}




とりあえず、ここまでコーディングしたら実行してみましょう。
さてどんなんになるかな??

パネルをクリックすると、くるくる回ります!
ほかのパネルを回すと次はそれが回る!

楽しい楽しいp(^-^)q

右上のパネルをクリックした時↓
無知の状態からiPhoneアプリ開発に挑んでみる-2011-5-2-3

左下のパネルをクリックした時↓
無知の状態からiPhoneアプリ開発に挑んでみる-2011-5-2-4

三角を押したときはなんか回転の中心がずれてる・・・。
用意した図形がおかしかったのかな?
まいっか(^▽^;)

まだ入れ替えはできないけど、次回はこのコードの説明をサクっとしたいと思います。

その前に自分も理解しないと・・・。

ではまた次回~


ランキングに参加しています。下のクリックお願いしますー(*゚ー゚*)

にほんブログ村 IT技術ブログ iPhoneアプリ開発へ

にほんブログ村 携帯ブログ iPhoneへ