cocos2d-x 勉強第4回「ドラッグ&ドロップ」
今回の目標
前回は「Cocos2d-x 勉強第3回「タップ処理を実装してみる」」
でタップした時にログを流すまでを記事にしました。
今回はその延長で、「ドラッグ&ドロップ」に挑戦してみようと思います。
ミクさん画像を、タップしながら移動できるようにするでござるぞー!
プロジェクトの流用
前回の記事で使用したプロジェクトをそのまま流用します。
まずは画像を小さく
今のミクさんの画像サイズでは大きすぎて、ドラッグ&ドロップするにしても移動幅が小さすぎるという問題があるので、 ミクさん画像をもうちょっと小さなサイズに縮めようと思います。
Classes/HelloWorldScene.cpp@diff
こんな感じでサイズを調整しておきます。
ドラッグ&ドロップ組み込み
タッチイベントの再確認
前回使用したonTouchBegan
コールバックでしたが、タッチイベント関係のコールバックにどんな種類があるのか再確認しておきたいと思います。
kCCTouchesOneByOneモード(シングルタップ)の際のコールバック
- onTouchBegan: タップ開始時にコールされる
- onTouchMoved: タップ開始後、タップポイントが移動されるとコールされる
- onTouchLongClicked: タップ開始後、長く同じポイントが押されつづけるとコールされる
- onTouchEnded: タップの正常終了時にコールされる
- onTouchCancelled: タップが何かしらの理由(システムコールなど)でキャンセルされた際にコールされる
kCCTouchesAllAtOnceモード(マルチタップ)の際のコールバック
- onTouchesBegan: マルチタップ開始時にコールされる
- onTouchesMoved: マルチタップ開始後、タップポイントが移動されるとコールされる
- onTouchesEnded: マルチタップの正常終了時にコールされる
- onTouchesCancelled: マルチタップが何かしらの理由(システムコールなど)でキャンセルされた際にコールされる
cocos2d-x 3.xと2.x系で大きく違うようなのでメモ
cocos2d-xにおけるタッチイベントに関してググると、下記のようなサンプルが目立つ。
ただ、3.x系ではccTouchBegan
がfinal指定されていてオーバーライドができなくなっている。
これはタッチイベントに関して、onTouchBegan
のようなコールバック形式に統一するという流れという認識でいいのかな…?
さて本題
こんな感じにドラッグ&ドロップ処理を記載していきました。
Classes/HelloWorldScene.h@diff
Classes/HelloWorldScene.cpp に下記の記述を追加
動作イメージ
いい感じじゃないですかね!
次回に向けて
今回は詰まることなくさくっといけました。このまま突き進んでいける手応えありです。ウホッ。
次回は、そうだなー、「サウンドの再生」に関してやってみようかなー!
ソースコード
https://github.com/8823-scholar/cocos2d-x-study/tree/adfecc60407fd283f8e3f79c98105ad773810242/study003taptaptap