【cocos2dx】アラートやサブ画面を出す時に使えるタッチ処理

【cocos2dx】アラートやサブ画面を出す時に使えるタッチ処理
   

今回と次回のエントリーは、私が他のアプリを見て、「これってどう実装しているのか」一度試してみたかったことを紹介します。
まず最初のお題は、「自作でアラートやサブ画面を作るときの処理」です。

言葉ではどういうものか言うのが難しいのですが、こんな感じのヤツです。

2013-12-11-ddassa

Yahoo! JAPAN インターネット クリエイティブアワード 2013 – Yahoo! JAPANに選出された「コインクロス」です。

コインクロス – お金のロジックパズル App
カテゴリ: ゲーム

価格: 無料


これで、画面をポーズしたり、またアラート形式でPlayerに案内などができます。

やりたいこと

こんな感じの実装です。
  1. ボタンを押す
  2. 別画面が出て、今の画面が半透明で暗くなる
  3. 別画面がのボタンが押せる、元の画面のボタンが押せない

1〜2は、特に難しくないのですが、3をするのは少し工夫が必要です。
では、3の部分を実装します。

実装

このやり方は、このcocos2dのレシピ本に載っています。
タッチイベントの優先順位をCCTouchDispacherクラスを使い調整してあげればいいだけです。

具体的には、以下のようになります。


まずは、ccTouchBegan()内で、trueを返すことで、タッチ処理を全てこのSubLayerで処理するようにします。
次に、SubLayerでのタッチの優先順位を調整。
CCMenuをレイアーより優先順位を高くしたらいいだけです。
これは、setTouchPriority()を使い設定します。数字が低いほど優先順位が高いです。

これで完了です。

IMG 0388

わかりにくいですが、赤で囲ったところがSubLayerです。

半透明にするには

元の画面を半透明にするには、SubLayerにCCLayerColorを追加してあげれば簡単にできます。


最後に

これでだいたい思ったとおりのことができますが、一点付け加えるとしたら、SubLayerが出てくる時に何かアニメーションなりエフェクトなり入れると見映えがします。
これは、CCActionクラスを使えば恐らくできると思います。
こちらは、是非チャレンジをしてみて下さい。

Related Posts Plugin for WordPress, Blogger...