新しいレイヤーをポップアップして、レイヤーの下のすべてのレイヤーを暗くしたいと考えています。
スコアボード、ダイアログパネルなど、もっとわかりやすくしてほしいです。
出来ますか?
あなたのコメント歓迎
新しいレイヤーをポップアップして、レイヤーの下のすべてのレイヤーを暗くしたいと考えています。
スコアボード、ダイアログパネルなど、もっとわかりやすくしてほしいです。
出来ますか?
あなたのコメント歓迎
最近、ゲームでこれを行いました。ダイアログ ボックスには Scale9Sprite を使用し、それ以外はすべて薄暗くするために LayerColor を使用しました。
YourDialogBoxClassName の子として、最も低い z インデックスに LayerColor を追加する必要があります (それ自体は Layer から継承する必要があります)。LayerColor インスタンスを z インデックス 0 に追加しました。
また、ポップ効果を提供するために ScaleTo などのアクションを追加する場合は、必ず setScaleX と setScaleY をオーバーライドして、背景の LayerColor に 1.0f の定数スケールを指定してください。ダイアログにわずかな回転を追加する場合は、メソッド setRotationX および setRotationY に対してこれを行うこともできます。
また、おそらく背景レイヤーへのすべてのタッチを無効にしたいと思うでしょう。私はメソッド onEnter と onExit をオーバーライドすることでこれを行いました:
void YourDialogBoxClassName::onEnter() {
Director::getInstance()->getTouchDispatcher()->addTargetedDelegate(this, Menu::HANDLER_PRIORITY, true);
Layer::onEnter();
}
void YourDialogBoxClassName::onExit() {
Director::getInstance()->getTouchDispatcher()->removeDelegate(this);
Layer::onExit();
}
次に、YourDialogBoxClassName で必要になります。
bool YourDialogBoxClassName::ccTouchBegan(Touch * touch, Event * event ) {
//Consumes the touch
return true;
}
背景を下位の z インデックスに追加したため、タッチは引き続きメイン ダイアログ スプライト (または表示されているもの) のメニュー項目に登録されます。