こんにちわ。
外は桜が満開ですが、今日も元気にやっていきましょうp(^-^)q
前回はタイトル画面からプレイ画面へ画面遷移したところで終わりましたね。
ではプレイ画面に表示するパネルを用意しましょう。
以下のファイルを用意しました。
原寸大で掲載してます。大きさは42×42ピクセルです。
![無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-9-4](https://stat.ameba.jp/user_images/20110408/20/iphoone/3a/d7/p/o0042004211154028458.png?caw=800)
![無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-9-5](https://stat.ameba.jp/user_images/20110408/20/iphoone/da/62/p/o0042004211154028457.png?caw=800)
![無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-9-3](https://stat.ameba.jp/user_images/20110408/20/iphoone/2f/6a/p/o0042004211154028455.png?caw=800)
![無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-9-2](https://stat.ameba.jp/user_images/20110408/20/iphoone/f4/68/p/o0042004211154028454.png?caw=800)
![無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-9-1](https://stat.ameba.jp/user_images/20110408/20/iphoone/19/9d/p/o0042004211154028453.png?caw=800)
左から「panel-0.png」~「panel-4.png」の5種類です。
これはいつも見たいにプロジェクトに追加しましょ。
このパネルを操作してゲームを進めていく予定。
![無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-12-1](https://stat.ameba.jp/user_images/20110411/21/iphoone/25/6d/p/t01960122_0196012211160549623.png?caw=800)
ここでこのパネルですが、移動したり消えたりと、様々なアニメーションをつけて
動かしたいと企んでおります( ̄▽+ ̄*)
こういうアニメーションを高速に処理してくれる便利な共通部品?が用意されています。
このアニメーションを使うためには、
iOSで利用できるフレームワーク(共通部品)「QuartzCore」をインポートする必要があります。
インポートは以下の方法でできます(・ω・)/
まず、左のFrameworkのフォルダで右クリック → 追加 → 既存のフレームワーク
を選択します。
![無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-12-3](https://stat.ameba.jp/user_images/20110411/21/iphoone/13/8a/p/t02200112_0526026811160549625.png?caw=800)
そしたら、こんなんがでてくるので、QuartzCore,Frameworkを選択します。
![無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-12-2](https://stat.ameba.jp/user_images/20110411/21/iphoone/ca/e4/p/t02200343_0352054811160549624.png?caw=800)
はいこれで追加できました。
![無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-12-4](https://stat.ameba.jp/user_images/20110411/21/iphoone/cf/4f/p/t02200092_0253010611160550346.png?caw=800)
で、次は実際にさっき追加したパネルを画面に表示させたいと思います。
いきなりここで新しいコトバですが、レイヤについて簡単な説明...
レイヤとはQuartzCoreでアニメーションを行う基本的な考えらしくて、
レイヤを使ってUIImageを表示すると、簡単かつ高速に変形・移動ができるようになるらしいのです。
そーなんだ。
では画面にパネルを置きますよ!(-^□^-)
プレイ画面で使用する変数などなどを宣言するため、
PlayViewController.hを編集します。
typedef enum{
PlayStateChoose, //パネルの選択という状態
PlayStateChange //パネルの交換という状態
} PlayState;
@interface PlayViewController : UIViewController {
IBOutlet UIImageView *backView;
IBOutlet UIImageView *frontView;
IBOutlet UILabel *scoreLabel;
IBOutlet UILabel *timeLabel;
PlayState state;
BOOL isFinished;
}
@end
実装するとこんな感じ↓
![無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-12-5](https://stat.ameba.jp/user_images/20110411/21/iphoone/6d/b6/p/o0383027111160670594.png?caw=800)
それでは、メソッドの内容を書くPlayViewController.mを編集しましょう。
先ほど追加したQuartzCoreは、単にプロジェクトに追加しても、コードで宣言をしないといけません。
PlayViewController.m の冒頭部分です。
赤いとこを追加しました。
#import "PlayViewController.h"
#import "QuartzCore/QuartzCore.h"
で、次に以下のコードを最後の@endの前に追加しました。
説明などは後にしてとりあえず、viewWillAppearメソッドを追加しましょう(≧▽≦)
- (void)viewWillAppear:(BOOL)animated{
srand((unsigned)time(NULL));
state = PlayStateChoose;
isFinished = NO;
for(int y=0;y<6;y++){
for(int x=0;x<6;x++){
CALayer *layer = [CALayer layer];
layer.bounds = CGRectMake(0,0,42,42);
layer.position = CGPointMake(59+(42+1)*x,53+(42+1)*y);
int dice = rand() % 5;
NSString *layerName = [NSString stringWithFormat:@"panel-%d",dice];
NSString *imageName = [layerName stringByAppendingPathExtension:@"png"];
layer.contents = (id)[UIImage imageNamed:imageName].CGImage;
layer.name = layerName;
[backView.layer addSublayer:layer];
}
}
}
実装するとこんな感じ↓
![無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-12-6](https://stat.ameba.jp/user_images/20110411/22/iphoone/ce/62/p/o0612033711160721036.png?caw=800)
はい、分けもわからず実装しましたが、とりあえず保存して実行してみてください!
タイトル画面から、プレイ画面へ移動すると下のような画面が表示されますv(^-^)v
![$無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-12-7](https://stat.ameba.jp/user_images/20110411/22/iphoone/a1/d3/p/t02200117_0744039611160734777.png?caw=800)
パネルはランダムで敷き詰めているので、全く同じじゃないとおもうけど、
なんかそれっぽい!ちょっと感動!
説明は次回にしたいと思います(*^o^*)
ランキングに参加しています。下のクリックお願いしますー(*゚ー゚*)
![にほんブログ村 IT技術ブログ iPhoneアプリ開発へ](https://img-proxy.blog-video.jp/images?url=http%3A%2F%2Fit.blogmura.com%2Fiphoneappli%2Fimg%2Fiphoneappli88_31_gold.gif)
![にほんブログ村 携帯ブログ iPhoneへ](https://img-proxy.blog-video.jp/images?url=http%3A%2F%2Fmobile.blogmura.com%2Fiphone%2Fimg%2Fiphone88_31.gif)
外は桜が満開ですが、今日も元気にやっていきましょうp(^-^)q
前回はタイトル画面からプレイ画面へ画面遷移したところで終わりましたね。
ではプレイ画面に表示するパネルを用意しましょう。
以下のファイルを用意しました。
原寸大で掲載してます。大きさは42×42ピクセルです。
![無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-9-4](https://stat.ameba.jp/user_images/20110408/20/iphoone/3a/d7/p/o0042004211154028458.png?caw=800)
![無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-9-5](https://stat.ameba.jp/user_images/20110408/20/iphoone/da/62/p/o0042004211154028457.png?caw=800)
![無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-9-3](https://stat.ameba.jp/user_images/20110408/20/iphoone/2f/6a/p/o0042004211154028455.png?caw=800)
![無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-9-2](https://stat.ameba.jp/user_images/20110408/20/iphoone/f4/68/p/o0042004211154028454.png?caw=800)
![無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-9-1](https://stat.ameba.jp/user_images/20110408/20/iphoone/19/9d/p/o0042004211154028453.png?caw=800)
左から「panel-0.png」~「panel-4.png」の5種類です。
これはいつも見たいにプロジェクトに追加しましょ。
このパネルを操作してゲームを進めていく予定。
![無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-12-1](https://stat.ameba.jp/user_images/20110411/21/iphoone/25/6d/p/t01960122_0196012211160549623.png?caw=800)
ここでこのパネルですが、移動したり消えたりと、様々なアニメーションをつけて
動かしたいと企んでおります( ̄▽+ ̄*)
こういうアニメーションを高速に処理してくれる便利な共通部品?が用意されています。
このアニメーションを使うためには、
iOSで利用できるフレームワーク(共通部品)「QuartzCore」をインポートする必要があります。
インポートは以下の方法でできます(・ω・)/
まず、左のFrameworkのフォルダで右クリック → 追加 → 既存のフレームワーク
を選択します。
![無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-12-3](https://stat.ameba.jp/user_images/20110411/21/iphoone/13/8a/p/t02200112_0526026811160549625.png?caw=800)
そしたら、こんなんがでてくるので、QuartzCore,Frameworkを選択します。
![無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-12-2](https://stat.ameba.jp/user_images/20110411/21/iphoone/ca/e4/p/t02200343_0352054811160549624.png?caw=800)
はいこれで追加できました。
![無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-12-4](https://stat.ameba.jp/user_images/20110411/21/iphoone/cf/4f/p/t02200092_0253010611160550346.png?caw=800)
で、次は実際にさっき追加したパネルを画面に表示させたいと思います。
いきなりここで新しいコトバですが、レイヤについて簡単な説明...
レイヤとはQuartzCoreでアニメーションを行う基本的な考えらしくて、
レイヤを使ってUIImageを表示すると、簡単かつ高速に変形・移動ができるようになるらしいのです。
そーなんだ。
では画面にパネルを置きますよ!(-^□^-)
プレイ画面で使用する変数などなどを宣言するため、
PlayViewController.hを編集します。
typedef enum{
PlayStateChoose, //パネルの選択という状態
PlayStateChange //パネルの交換という状態
} PlayState;
@interface PlayViewController : UIViewController {
IBOutlet UIImageView *backView;
IBOutlet UIImageView *frontView;
IBOutlet UILabel *scoreLabel;
IBOutlet UILabel *timeLabel;
PlayState state;
BOOL isFinished;
}
@end
実装するとこんな感じ↓
![無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-12-5](https://stat.ameba.jp/user_images/20110411/21/iphoone/6d/b6/p/o0383027111160670594.png?caw=800)
それでは、メソッドの内容を書くPlayViewController.mを編集しましょう。
先ほど追加したQuartzCoreは、単にプロジェクトに追加しても、コードで宣言をしないといけません。
PlayViewController.m の冒頭部分です。
赤いとこを追加しました。
#import "PlayViewController.h"
#import "QuartzCore/QuartzCore.h"
で、次に以下のコードを最後の@endの前に追加しました。
説明などは後にしてとりあえず、viewWillAppearメソッドを追加しましょう(≧▽≦)
- (void)viewWillAppear:(BOOL)animated{
srand((unsigned)time(NULL));
state = PlayStateChoose;
isFinished = NO;
for(int y=0;y<6;y++){
for(int x=0;x<6;x++){
CALayer *layer = [CALayer layer];
layer.bounds = CGRectMake(0,0,42,42);
layer.position = CGPointMake(59+(42+1)*x,53+(42+1)*y);
int dice = rand() % 5;
NSString *layerName = [NSString stringWithFormat:@"panel-%d",dice];
NSString *imageName = [layerName stringByAppendingPathExtension:@"png"];
layer.contents = (id)[UIImage imageNamed:imageName].CGImage;
layer.name = layerName;
[backView.layer addSublayer:layer];
}
}
}
実装するとこんな感じ↓
![無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-12-6](https://stat.ameba.jp/user_images/20110411/22/iphoone/ce/62/p/o0612033711160721036.png?caw=800)
はい、分けもわからず実装しましたが、とりあえず保存して実行してみてください!
タイトル画面から、プレイ画面へ移動すると下のような画面が表示されますv(^-^)v
![$無知の状態からiPhoneアプリ開発に挑んでみる-2011-4-12-7](https://stat.ameba.jp/user_images/20110411/22/iphoone/a1/d3/p/t02200117_0744039611160734777.png?caw=800)
パネルはランダムで敷き詰めているので、全く同じじゃないとおもうけど、
なんかそれっぽい!ちょっと感動!
説明は次回にしたいと思います(*^o^*)
ランキングに参加しています。下のクリックお願いしますー(*゚ー゚*)
![にほんブログ村 IT技術ブログ iPhoneアプリ開発へ](https://img-proxy.blog-video.jp/images?url=http%3A%2F%2Fit.blogmura.com%2Fiphoneappli%2Fimg%2Fiphoneappli88_31_gold.gif)
![にほんブログ村 携帯ブログ iPhoneへ](https://img-proxy.blog-video.jp/images?url=http%3A%2F%2Fmobile.blogmura.com%2Fiphone%2Fimg%2Fiphone88_31.gif)