2016年7月26日この記事ではCocos2d-xによるモーダルレイヤー実装のやり方について説明します。モーダルレイヤーとはモーダルとは操作が完了するまで親への操作を受け付けなくさせるという意味の言葉です。モーダルレイヤーとは「そのレイヤーが存在している間、そのレイヤーでしかタップ操作を受け付けないレイヤー」のことです。それでは具体的にモーダルレイヤーの仕組みを見ていきましょう。レイヤーを重ねてモーダルレイヤーの仕組みを理解するレイヤーを重ねるCocos2d-xではレイヤーの上にスプライトを重ねて画面を構成します。このレイヤーは何枚も重ねることが可能です。メインのゲーム画面上にメニューのような画面を表示させたい場合、「メニュー画面レイヤー」を作成して「メインのゲーム画面レイヤー」に追加することで、メニュー画面が作成できます。レイヤーを重ねることの不都合ただし、単純にレイヤーを追加するだけでは不都合を引き起こす場合があります。両方のレイヤーにタップイベントリスナーが設定されている場合、メニュー画面だけを操作したいのに、メインのゲーム画面の操作も一緒に行ってしまうのです。これを回避するには、メニュー画面レイヤーをモーダルレイヤーとして実装すれば良いのです。それでは実際のモーダルレイヤーのコードを見ていきましょう。}モーダルレイヤー実現の仕組みポイントは以下の2点です。・listener->setSwallowTouches(true)優先度の高いイベントだけを実行するメソッドです。今回の場合、「メニュー画面レイヤー」は「メインゲーム画面レイヤー」に対して前面ノードです。この時、この2つのレイヤーのイベントリスナーの優先度の関係は「メニュー画面レイヤー」>「メインゲーム画面レイヤー」となっています。※後から追加されたほうが前面ノード扱いとなります。true;}モーダルレイヤ側のonTouchBeganは処理の最後に必ずtrueを返す必要があります。trueを返すことで初めてonSwallowTouches(true)の効果が得られます。onTouchBeganがfalseを返した場合、下位レイヤーであるメインゲーム画面レイヤーまでタッチイベントが透過してしまいます。このモーダルレイヤをメインゲーム画面レイヤーにaddChildしている間、モーダルレイヤのみの操作が可能になります。後はモーダルレイヤ上に実現したい処理を追加してください。true;}を記述することでモーダルレイヤーの実装が可能となります。コードの丸暗記だけでなく、このような仕組みを知っておくことで、他の言語でも理解の応用が効くようになるのではないでしょうか。コメントをキャンセルメールアドレスが公開されることはありません。アプリ起動画面(スプラッシュ画像)の変更方法についてこの記事では、アプリの起動画面(スプラッシュ画像)の変更のやり方について説明します。このスプラッシュ画像、どうやって変更するのか結構わかりづらいと思います。カスタムイベントを削除するタイミングこんにちは、akiです。この記事ではカスタムイベントを削除するタイミングについて説明します。アプリ名(アプリのアイコン名)のローカライズ方法こんにちは。この記事ではCocos2d-xでのアプリ名(アプリのアイコン名)のローカライズについて説明します。セーブデータをサーバに送信して保存する」の続きになります。プログラム実装~実機テストまでの13の手順この記事では、SDKBoxを利用したiOSアプリ内課金のプログラム実装から実機テストのやり方まで、一連の流れで説明します。