Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocos2d x 是否可以使图层变暗(cocos2dx)_Cocos2d X - Fatal编程技术网

Cocos2d x 是否可以使图层变暗(cocos2dx)

Cocos2d x 是否可以使图层变暗(cocos2dx),cocos2d-x,Cocos2d X,我希望弹出一个新的图层,使图层下的所有图层都变暗 比如记分板,对话框面板,我希望它们能更清晰 可能吗 您的评论欢迎我最近在一个游戏中这样做,我使用Scale9Sprite作为对话框,并使用LayerColor使其他颜色变暗 您需要将z索引最低的LayerColor作为子对象添加到YourDialogBoxClassName(本身需要从Layer继承),我将LayerColor实例添加到z索引0中 此外,如果要添加动作(如ScaleTo)以提供弹出效果,请确保覆盖setScaleX和setScal

我希望弹出一个新的图层,使图层下的所有图层都变暗

比如记分板,对话框面板,我希望它们能更清晰

可能吗


您的评论欢迎

我最近在一个游戏中这样做,我使用Scale9Sprite作为对话框,并使用LayerColor使其他颜色变暗

您需要将z索引最低的LayerColor作为子对象添加到YourDialogBoxClassName(本身需要从Layer继承),我将LayerColor实例添加到z索引0中

此外,如果要添加动作(如ScaleTo)以提供弹出效果,请确保覆盖setScaleX和setScaleY,使背景层颜色的比例恒定为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();
}
然后在DialogBoxClassName中需要:

bool YourDialogBoxClassName::ccTouchBegan(Touch * touch, Event * event ) {
    //Consumes the touch
    return true; 
}

因为您将背景添加到较低的z索引中,所以触摸仍将注册主对话框精灵(或您正在显示的任何内容)中的菜单项。

在我的项目中,我为暂停层执行了以下操作:

CCLayerColor *bgLayer = CCLayerColor::create(ccc4(0,0,0,170));
this->addChild(bgLayer);

//Add other pause menu elements (Title, Resume button, quit button, etc.)

我在一个按钮点击事件中添加了这个,整个屏幕变暗了。只需确保该层位于其他层的顶部。

您可以设置弹出层的z顺序,也可以设置所有其他层的不透明度。我认为,这样您就可以实现您想要的效果,您必须使用一个黑色图像。您必须将其放在任何层之前,然后使用不透明度将其设置为半透明。然后在上面添加记分卡层。同时,您必须禁用其他层上的所有按钮。例如,查看我的游戏的最后一个屏幕截图: