前回の記事でタッチイベントについて
自分なりに処理を理解できたので(つもり)まとめます。
ゲームを作る上でかなり大事な画面タッチのイベントを制御している。
各ノードで制御しているわけではなく
画面で制御しているので”Director::getInstance()”で取得する
1 2 3 4 5 |
//画面に貼り付けているノードを上から順に処理を実施 addEventListenerWithSceneGraphPriority //ノードのタッチイベントに優先度をつける addEventListenerWithFixedPriority |
優先度をつけても基本的にタッチイベントは貫通するので
どんなに重ねても重ねても、下位のノードのイベントを実行してしまいます。
なのでなにかしらのボタンの上にレイヤーを重ねる場合
そのレイヤーでの処理が始まったら”タッチイベントを貫通させない処理”が必要でした
それが
1 2 |
//falseにすると貫通します。 listener->setSwallowTouches(true); |
この処理を追加することで、下位の(優先度、ノード順ともに)ノードの
タッチ処理を実施させないようになります。
これを踏まえた上で前回の記事は
イベントを貫通させて、処理をキャンセルする処理をいれました。