ドムドムその11:かんたんフリックの作り方(後編)

サルでき.jp > 11.サルにもできるiPhoneアプリの作り方(旧アメブロ記事) > ドムドムその11:かんたんフリックの作り方(後編)

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

事後編がはじまりましたね。

なぜ「無事?」という方は前編からご覧いただくことをオススメします。
ドムドムその10:かんたんフリックの作り方(前編)

さてさて、
いよいよかんたんフリック作りに入るわけですが、
はじめるまえに基本的な考え方をお話ししましょう。

前回作ったボタンボール。
これはアクションのつなぎ方次第で、様々な状態をキャッチすることができます。

———————–

Touch Down : 文字通りタッチした瞬間をキャッチ。「今押されましたよ!」
Touch Down Repeat : 連射した時の2回目以降をキャッチ、ダブルクリックみたいなもの

この辺はわかりやすいですね。

Touch Up Inside : 指を離した瞬間をキャッチ。「今離れましたよ!」
Touch Up Outside : 指を離した瞬間をキャッチ、ただしオブジェクトの外で
Touch Drag Inside : 指をドラッグした瞬間をキャッチ。「ドラッグされてます!」
Touch Drag Outside : 指をドラッグした瞬間をキャッチ、ただしオブジェクトの外で

補足1
Dragに関しては、指をすーっと動かした時に1回起こるわけではなく、
動かしている間中細かく Drag Drag Drag Dragと起こっていきます。

補足2
Outsideが若干わかりにくいのですが、ボタンボールの場合で言うと、

・最初にTouch Downで触る
・そのまま指をドラッグして、ボールから指がハミ出る

→Outsideになる

ということです。

離せばUp、ドラッグし続けるとDragになります。
最初からこういう状態になるわけではなく、結果としてそういう状態になってしまうわけです。

Touch Drag Exit : ドラッグしてボールの外に指が出た瞬間をキャッチ
Touch Drag Enter : ドラッグしてボールの中に指が戻ってきた瞬間をキャッチ

これもドラッグ中の特定の状態のキャッチですね。

ボタンボールを置いておいて指をズリズリ動かしていると、
様々な状態がめまぐるしく変わっていることになります。

———————–

で、今回のかんたんフリックは何を使うのか、ということなのですが。

Touch Drag Insideを使います。

「ボールの上に指が触れて、素早く動かされた時に、ボールをそっち方向に弾く」

というフリックの動きを、

「ボールの上を指がドラッグしたときに、ドラッグ前と後の指の位置を押さえておいて、
その移動距離を速度に変換してボールに与える」

という形に意訳するわけです。

見た方が簡単なので、まずはこちらのコードを追記してください。

domdomViewController.h
ドムドムその11:かんたんフリックの作り方(後編)
<クリックで拡大>

前回分もシレっと書いていますが、
今回のポイントはdragBallというアクションメソッドです。

後で使うので、vxTemp, vyTempという2つの変数も書いておいてください。

domdomViewController.m
ドムドムその11:かんたんフリックの作り方(後編)
<クリックで拡大>

そしてメソッドの中身はこちら。

-(IBAction)dragBall{
vx2 = posX2 – vxTemp;
vy2 = posY2 – vyTemp;

vxTemp = posX2;
vyTemp = posY2;
}

コレだけです。

え?もう少し説明要ります?やっぱり?

-(IBAction)dragBall{
// vx2(x方向への速度) = posX2(X座標の現在位置)- vxTemp(1ドラッグ前のX座標の位置)
vx2 = posX2 – vxTemp;
// vy2(y方向への速度) = posY2(Y座標の現在位置)- vyTemp(1ドラッグ前のY座標の位置)
vy2 = posY2 – vyTemp;

// vxTempに現在位置posX2を代入
vxTemp = posX2;
// vyTempに現在位置posY2を代入
vyTemp = posY2;
}

ドラッグしてる間中、この計算を繰り返し続けます。

指が離れた瞬間にボールは速度vx2,vy2に従って動き出しますので、
結果的にボールが弾かれるわけです。

ぽーんと。

ホントかよ?という方。

ボールをアクションと接続してもらって。

ドムドムその11:かんたんフリックの作り方(後編)

心ゆくまでお試しください。

勘のいい方ならお気付きかと思いますが、

・vxTemp,vyTempの初期化はどうすんの?
・Touch Up InsideとかTouch Up Outsideとか、指が離れた瞬間に計算したが良いんじゃないの?
・Touch Downを上手く使えないの?
・っていうかしばらく遊んでると動きがぎこちなくなるんだけど

この辺が、かんたんフリックのパチモノたる所以でございます。

もっと精度の高いコントロールは追って書かせていただきますので、
まずは自在にボールを操る感覚をお楽しみください。

かんたんって最高!

関連する記事:


Advertisement