0

新しいレイヤーをポップアップして、レイヤーの下のすべてのレイヤーを暗くしたいと考えています。

スコアボード、ダイアログパネルなど、もっとわかりやすくしてほしいです。

出来ますか?

あなたのコメント歓迎

4

2 に答える 2

0

最近、ゲームでこれを行いました。ダイアログ ボックスには 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 インデックスに追加したため、タッチは引き続きメイン ダイアログ スプライト (または表示されているもの) のメニュー項目に登録されます。

于 2013-09-25T11:04:12.183 に答える