「七瀬ふたたび」またNHKでリメイクしてたな。ランニング中、観てました。来週も走るか?
今回はジュブナイルじゃなかったんで、かわいいテレパスの七瀬が、向かい側に座った男の、自分を裸にする妄想をいやおうなしに読み取ってしまうシーンも、ゆるいなりに「実装」されておりました。
以前、赤塚不二男がコミカライズされた時もちゃんと描いてたな。「七瀬ふたたび」じゃなく「家族八景」の方だけど、つーか個人的には亡き藤子F不二雄の絵柄で見てみたかった。最近、「三丁目のサテンドール」の清原なつのがコミカライズした方は未読。
というヲタな話をだらだらに漏らしながらコアアニメーションの話。
当初の「iPhoneアプリ開発、その(11)」でのChimpanzeeゲームの仕様では、最初に押すべきボタンと順序をしばらく表示して、その後のっぺらぼうのボタンを出すわけですよ。
この、しばらくってのが問題。コアアニメーション使ってやれないことはなさそうだけど、とんでもなくめんどくさそうじゃん。やりたくねーっす。
で、思ったのが、以前「クォーツの世界」で使ったNSTimer使えねーかな...
使えました。
とりあえず、サンプル上げるのは次回ということで、まずは、この前のChimpanzee-01の説明。というかメインソースChimpanzeeGameViewController.mの説明ね。
- (IBAction)respondToButtonClick:(UIButton*)sender
での
[self start:@"Faled!"]; // 「間違い」のアラート
や
[self start:@"Complite!"]; // 成功というアラートを表示
は、作ってる最中にアラートって、ちょっとメッセージが違うだけで、あと、ほとんど同じじゃんと思って
- (void)start:
に引数
(NSString*)message
を追加して使い回すことにした結果です。なので
- (void)viewDidLoad
でも、この新しい
- (void)start:(NSString*)message
を呼ぶようにしている。
で、このviewDidLoadでおこなってる
static const int BUTTON_WIDTH = 80;
static const int BUTTON_HEIGHT = 80;
static const int BUTTON_MERGIN = 10;
は
bt.frame = CGRectMake(h * (80 + 10) + 10,
v * (80 + 10) + 10,
80, 80);
て書くより
bt.frame = CGRectMake(h * (BUTTON_WIDTH + BUTTON_MERGIN) + BUTTON_MERGIN,
v * (BUTTON_HEIGHT + BUTTON_MERGIN) + BUTTON_MERGIN,
BUTTON_WIDTH, BUTTON_HEIGHT);
てほうが、やってることが明示的にできるのと、後から変更がやりやすいため。
ボタンとボタンの幅を20にしてみようとか思えば
static const int BUTTON_MERGIN = 20;
てやって再ビルドすれば済む。てかMERGINじゃなくMARGINですな。
そういう意味では
for (int v = 0; v < 3; v++) {
for (int h = 0; h < 3; h++) {
なんかも
for (int v = 0; v < BUTTON_V_COUNT; v++) {
for (int h = 0; h < BUTTON_H_COUNT; h++) {
として注釈付きで
static int BUTTON_H_COUNT = 3; // ボタンの横の数
static int BUTTON_V_COUNT = 3; // ボタンの縦の数
とすると、なお良しか...
- (void)start:(NSString*)message
でやってる
clickSquence[0] = 2;
clickSquence[1] = 8;
clickSquence[2] = 6;
clickSquence[3] = -1;
が、押し順の設定で、ここを
clickSquence[0] = 2;
clickSquence[1] = 6;
clickSquence[2] = -1;
てやれば、2 → 6 の順にボタンを押すことになるし
clickSquence[0] = 4;
clickSquence[1] = 2;
clickSquence[2] = 1;
clickSquence[3] = 7;
clickSquence[4] = -1;
なら 4 → 2 → 1 → 7 の順にボタンを押すことになる。
ここが本来、respondToButtonClickの判定部分も含め
ChimpanzeeExaminer
が作る部分となる。
その後でやってるstringWithFormatやstringByAppendingStringでのNSString操作は
2 → 8 → 6
という文字列を作る作業。アラートにこの文字列を出させて、あとはとくにやることないので
- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
は、なにもしません。この場合、UIAlertViewのinitWithTitleのdelegateにはNULLを指定するのが正解なのかも...
ま、そこらへんは各自で実験してちょ。
以下次回。
ま~、ソース無くても、NSTimerの使い方は「クォーツの世界」でわかるし、ボタンの消し方はレイヤーの時と同じ
button.hidden = TRUE;
だし、自力でなんとかできる人はできるよね。
今回はジュブナイルじゃなかったんで、かわいいテレパスの七瀬が、向かい側に座った男の、自分を裸にする妄想をいやおうなしに読み取ってしまうシーンも、ゆるいなりに「実装」されておりました。
以前、赤塚不二男がコミカライズされた時もちゃんと描いてたな。「七瀬ふたたび」じゃなく「家族八景」の方だけど、つーか個人的には亡き藤子F不二雄の絵柄で見てみたかった。最近、「三丁目のサテンドール」の清原なつのがコミカライズした方は未読。
というヲタな話をだらだらに漏らしながらコアアニメーションの話。
当初の「iPhoneアプリ開発、その(11)」でのChimpanzeeゲームの仕様では、最初に押すべきボタンと順序をしばらく表示して、その後のっぺらぼうのボタンを出すわけですよ。
この、しばらくってのが問題。コアアニメーション使ってやれないことはなさそうだけど、とんでもなくめんどくさそうじゃん。やりたくねーっす。
で、思ったのが、以前「クォーツの世界」で使ったNSTimer使えねーかな...
使えました。
とりあえず、サンプル上げるのは次回ということで、まずは、この前のChimpanzee-01の説明。というかメインソースChimpanzeeGameViewController.mの説明ね。
- (IBAction)respondToButtonClick:(UIButton*)sender
での
[self start:@"Faled!"]; // 「間違い」のアラート
や
[self start:@"Complite!"]; // 成功というアラートを表示
は、作ってる最中にアラートって、ちょっとメッセージが違うだけで、あと、ほとんど同じじゃんと思って
- (void)start:
に引数
(NSString*)message
を追加して使い回すことにした結果です。なので
- (void)viewDidLoad
でも、この新しい
- (void)start:(NSString*)message
を呼ぶようにしている。
で、このviewDidLoadでおこなってる
static const int BUTTON_WIDTH = 80;
static const int BUTTON_HEIGHT = 80;
static const int BUTTON_MERGIN = 10;
は
bt.frame = CGRectMake(h * (80 + 10) + 10,
v * (80 + 10) + 10,
80, 80);
て書くより
bt.frame = CGRectMake(h * (BUTTON_WIDTH + BUTTON_MERGIN) + BUTTON_MERGIN,
v * (BUTTON_HEIGHT + BUTTON_MERGIN) + BUTTON_MERGIN,
BUTTON_WIDTH, BUTTON_HEIGHT);
てほうが、やってることが明示的にできるのと、後から変更がやりやすいため。
ボタンとボタンの幅を20にしてみようとか思えば
static const int BUTTON_MERGIN = 20;
てやって再ビルドすれば済む。てかMERGINじゃなくMARGINですな。
そういう意味では
for (int v = 0; v < 3; v++) {
for (int h = 0; h < 3; h++) {
なんかも
for (int v = 0; v < BUTTON_V_COUNT; v++) {
for (int h = 0; h < BUTTON_H_COUNT; h++) {
として注釈付きで
static int BUTTON_H_COUNT = 3; // ボタンの横の数
static int BUTTON_V_COUNT = 3; // ボタンの縦の数
とすると、なお良しか...
- (void)start:(NSString*)message
でやってる
clickSquence[0] = 2;
clickSquence[1] = 8;
clickSquence[2] = 6;
clickSquence[3] = -1;
が、押し順の設定で、ここを
clickSquence[0] = 2;
clickSquence[1] = 6;
clickSquence[2] = -1;
てやれば、2 → 6 の順にボタンを押すことになるし
clickSquence[0] = 4;
clickSquence[1] = 2;
clickSquence[2] = 1;
clickSquence[3] = 7;
clickSquence[4] = -1;
なら 4 → 2 → 1 → 7 の順にボタンを押すことになる。
ここが本来、respondToButtonClickの判定部分も含め
ChimpanzeeExaminer
が作る部分となる。
その後でやってるstringWithFormatやstringByAppendingStringでのNSString操作は
2 → 8 → 6
という文字列を作る作業。アラートにこの文字列を出させて、あとはとくにやることないので
- (void)alertView:(UIAlertView *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
は、なにもしません。この場合、UIAlertViewのinitWithTitleのdelegateにはNULLを指定するのが正解なのかも...
ま、そこらへんは各自で実験してちょ。
以下次回。
ま~、ソース無くても、NSTimerの使い方は「クォーツの世界」でわかるし、ボタンの消し方はレイヤーの時と同じ
button.hidden = TRUE;
だし、自力でなんとかできる人はできるよね。