2014年7月4日金曜日

cocos2dxでスワイプ、ロングタップなどを可能にする

cocos2dxにはあらかじめ、タッチイベントが用意されているのだけど、
スワイプやロングタップなどのジェスチャーイベントは無いので、
自分で頭を捻ってコードを書くか、頭の良い親切な人が作ってくれた
拡張クラスをダウンロードして使用するかする必要がある。



もちろん自分は後者を選びました。

スワイプなどのジェスチャーに関しては
検索すればもろもろ出てくるのだけど、ここでもやっぱり
v2系とv3系の問題が出ててくる。
落としてきたものがv2用だからか、やはりそのままでは動かない。
v3で動く拡張クラスを探さなければ…
というわけで、v3でスワイプなどのジェスチャーをする場合、
このサイトさんが非常に参考になりました。
どうもありがとうございます。

v3だと拡張する際にヘッダダイルに入れるプロトタイプ宣言も、v2とは違うので注意が必要。


//XTLayer 拡張機能
以下の宣言がそれ。他にも追加機能はあるんだけど(上記画像で入れてるタッチイベントは簡易版で、そうじゃないのがもう1セットある様子)、コンパイルがうまくいかず断念。まぁ、これらが使えればとりあえずは問題なさそうなので他の機能は一旦放置。

メインcppのinit()の中でこの宣言をしておかないと、動きません(普通のonTouchイベントとほぼ一緒。onかxtかの違いくらい)。


ちなみに、このXTlayerという拡張レイヤーに変更すると普通のonToucheイベントはうまく動かなかった。というより、onTouchイベントを入れると、XTlayerの拡張機能のほうがうまいこと機能しなかった。一応、コンパイルはできたけど、挙動が怪しかった、という感じ。このXTLayerを使うときはこの拡張機能の中でタッチイベントはすべて完結させたほうがよろしいのかもしれない。


スワイプや長押しの秒数などの設定は、ここの記述で調整。多少いじってみたけど、しきい値の変更をすることでどういう違いがでるのかはよくわからなかった。
LontTaptimeはわかりやすい。おそらくミリ秒での指定なので、1000なら1秒、2000なら2秒長押ししないとスイッチがオンにならない…と思われる。

以上、XTLayerまとめ。
ちょっと古い備忘録を自分のデスクトップから引っ張り出してきたのでコード箇所が画像です。見づらかったらスミマセヌ。


☆★というわけでcocos2d-xで制作しました★☆
☆★上記で説明したスワイプ、ロングタップも組み込まれてます★☆

レッド・ザ・パニッシャー ―スタイリッシュレトロアクション―
カテゴリ: アクション
Google Playで詳細を見る

今なら(永久に)無料! 今すぐチェック!!

0 件のコメント:

コメントを投稿