開発基礎トレリターンズ3:オブジェクトを捕まえろ!

サルでき.jp > 11.サルにもできるiPhoneアプリの作り方(旧アメブロ記事) > 開発基礎トレリターンズ3:オブジェクトを捕まえろ!

2009/12/02 09:00 投稿先 11.サルにもできるiPhoneアプリの作り方(旧アメブロ記事) 投稿者 カワサキ タカシ

侘び。

この記事。ほぼ95%完成。というときに。
まさかのブラウザ落ちによって消えてしまいました。

ココロが折れる音がしました。
膝を抱えて泣いてしまうところでした。

きっとアレです。
「都庁っていざとなったら変形して飛ぶんだぜ」とか
ウソばっかりついてきた事がいけなかったんでしょう。

過ぎ去ったものは仕方ありません。
私からみなさまに伝えられることは。

セーブしろ。©ゲームセンターCX

以上でございます。

それでは本日の更新。ダイジェストでお届けします。


本日は開発基礎トレリターンズその3と称しまして。
オブジェクトの取っ捕まえ方をお話しする予定でした。

オブジェクトの捕まえ方?

とりあえずゴールを見ていただきましょう。ゴール、ドン!
開発基礎トレリターンズ3:オブジェクトを捕まえろ!

画面に並べた20個のピクチャーオブジェクト(=ボタンオブジェクト)をタッチすると
そのボタンを拡大しつつ、ラベルにどのボタンかを表示する。

今まではこういうものを作る時に、
オブジェクトの個数分処理を作ってしまう。
というスーパー非効率なやり方を採ってきました。

ドムドムの2つのボール操作しかり。
ドムドム:完成版ソースファイル ダウンロードはこちら!

各々の基本アニメーションしかり。
開発基礎トレリターンズ2:基本アニメ公式集ダウンロード

なぜって。それしかできなi大人の事情で。

ついピクアートを作るにあたって、
画面上所狭しと並ぶピクチャーオブジェクトの数分だけ処理を書いてしまっては、
正直それはエンジニアブログとしていかがなものかと。

ということで、ズバッと1発。
1つのアクション、1つの処理で、コレを実現します。

とりあえず細かい事は次回ソースコードを公開しますので、
下準備だけ ちゃっ とやってみてください。

ボタンの準備
・UIButtonを20個の上に設置
・UIButton型のアウトレットを20個宣言
・アウトレットとボタンを各々接続

ラベルの準備
・UILabelを設置
・UILabel型のアウトレットを宣言
・アウトレットとラベルを各々接続

問題なくできましたか?

では本題。アクションの宣言と実装です。

// ピクチャータッチ時のアクション
-(IBAction)touchPict:(id)sender;

今までは設定していない事が多かったのですが、
今回は(id)senderを設置してオブジェクトを丸投げしておきます。

(id)senderって何?って方はこちらへどうぞ。
答えてズンズン!:(id)senderってナニ?

実装はこんな感じ。

- (IBAction)touchPict:(id)sender{

// 丸投げしておいたオブジェクトを、同じ型のボタンで受ける
UIButton *btn = (UIButton *)sender;
// ボタンに設定してあるタグを引っ張りだす
int targetTag = btn.tag;
// タグ情報をラベルに表示
[label setText: [NSString stringWithFormat:@"%d 番目のボタン",targetTag]];

// アニメーション設定
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.2];

// 拡大縮小

// ボタンがアニメーション前の場合
if(CGAffineTransformIsIdentity(btn.transform)){
// ボタンを動かすよう設定
CGAffineTransform scale = CGAffineTransformMakeScale(1.2, 1.2);
[btn setTransform:scale];

// ボタンがアニメーション後の場合
}else{
// ボタンを元に戻すよう設定
CGAffineTransform scale = CGAffineTransformMakeScale(1.0,1.0);
[btn setTransform:scale];
}

// アニメーションの実行
[UIView commitAnimations];
}

1つだけ覚えて帰りましょう。

タグという便利屋がいます。

見逃しがちですが、インスペクタ覗くとちゃんといます。
開発基礎トレリターンズ3:オブジェクトを捕まえろ!

今回のように同じようなものが沢山ある場合、
処理をまとめようとすると必ず
今処理しているのはどのオブジェクトかということが問題になります。

そのときにボタンを何で識別するかというと。
タグで識別します。ここに書いておけばOKです。

・(id)sender使って丸投げ
・同じ型のオブジェクトで受ける
・タグを引っ張りだしてきてこのオブジェクトがどれかを識別

これだけで相当スッキリオブジェクトを捕まえられるようになります。

クールでスマートなオブジェクト操作を是非お試しください。


本来は抱腹絶倒。悶絶笑い地獄にオトす文章だった(ハズ)なのですが、
なんたる運命のいたずら。

駆け足文章になってしまったことをお詫びいたします。

繰り返してご案内いたします。

セーブしろ。©ゲームセンターCX

みなさまも本当にお気をつけ下さい。

関連する記事:


Advertisement