みなさま、ありがとうございました。
昨日のTOP10報告でたくさんコメントをいただきました。
祝!アメブロエンジニアTOP10入り
三十路過ぎのオッサンがディスプレイの前で泪酒(発泡酒)でございます。
やっててよかったーあはははー。
…で、本日さらっとTOP10落ち。
あっぶねぇ!昨日書いててよかった!
ラッキーパンチをいつまでも引きずっているのもアレですので、先に参りましょう。
今回はモノだけ作って放置していた、ON/OFFスイッチを実装します。
コードはこんな感じで。
最初に設定しておいたdispBallというアクションメソッドの中身として書きます。
ドムドムその4:アウトレット基礎工事
domdomViewController.m
<クリックで拡大>
この辺詳しい仕様を決めていなかったので、
とりあえず
・ボタンが押されたら真ん中に表示
・もう1回押されたら非表示
を、繰り返すことにしました。
リセットボタン風の使い方です。
処理は3段階に分かれていて、
・ボタン押したタイミングでボールは見えてる?見えてない?の判定
– 見えていたら消す
– 見えていなかったら表示
・位置、速度、加速度の初期化(リセット)
・位置の修正
こんな感じになっています。
一番最初のステップはいろいろ使えるので覚えちゃいましょう。
ImageViewはhiddenという読んで字の通り「表示/非表示」のプロパティを持っていますので、
それを確認すれば見えているか見えていないかはプログラム上からでもチェックできます。
– 見えていたら消す(hiddenをYESに)
– 見えていなかったら表示(hiddenをNOに)
です。
コレだけでも良いんですけど、
非表示になっても、位置、速度、加速度はバンバン更新されているので、
再表示した時にあらぬ方向から出現したりするわけです。
なので、表示と同時に位置、速度、加速度を初期化しちゃうわけです。
(つまり初期化の部分は非表示にする際には要りませんね。私の書き方は手抜きです。)
さて、このまま「ビルドして進行」でもいいのですが、
1点修正を。
私だけかもしれませんが。
なんとなく流れで「Touch Up Inside」でつないでいる人、
いらっしゃいましたら「Touch Down」につなぎ直しをしておいてください。
Touch Up Insideは指が離れた時に動き、
Touch Downは指が触れた時に動きます。
なんとなく今回は触れた時に動く方が自然に見えますので、
Touch Downで行きましょう。
ということで「ビルドして進行」どーん!
ばっちり!消えますね!
めでたしめでたし。
で、終わる予定だったんですが。
今日しっくりきたことがありましたので、
忘れないように書いておきます。
えーと。
私。
Objective-CというかXcodeというか。
プログラミングをしていてどーにもわかっていなかったのが、
今回出てきた「オブジェクトのプロパティをプログラムからいじる」というヤツでした。
Flashなんてコレが命みたいなところですから、
当然こっちもあるだろうとは思っていたのですが実はよくわかっておらず。
適当にいじっていたら動いてしまった。
というある種いつものパターンで理解するに至ったわけです。
ナニを言っているかと言うと、
この、インスペクタ上の各項目。
アルファ(透明度)、hidden(表示非表示)、サイズ、位置、もろもろ。
このインスペクタ上で設定するのは「初期値」なので、
プログラム動作中にいじりたくなった場合はどーするんだと。
いじれるに決まってるけど、いじり方がよくわからないぞと。
思っていたわけです。
で、今回の記事書いてる時に、
ball.
ball.hidden
ball.hidden = YES;
?
なんかエディタが勝手に補完した。
ってことこで、ビルドしたらエラーなしで通ってしまったわけです。
これだけかよ!すげー調べちゃったよ!
で、試しにこんなプログラムを書いてみまして。
えいっと「ビルドして進行」。
スケスケ。
サイズを取得する時は、
ball.image.size.width;
なんて書いたように、
ball自体からダイレクトに取れませんでしたので、もちろん万能な考え方では無いんでしょうけど。
ドムドムその8:壁を作って弾ませよう
入り口としては充分です。
コレがわかれば結構やれます。
知らなかったの?
っていう突っ込みが昨日のコメントより多く来たらどうしましょう。
そうだ、「公開しない」にしましょう。