【发布时间】:2020-11-12 05:07:57
【问题描述】:
我在 cocos2dx 中工作,我试图在 lambda 表达式中更改一个名为 selectedBlockTexture 的字符串变量的值,该表达式充当按钮按下的回调。不幸的是,我找不到解决这个问题的方法,它一直告诉我在特定的内存位置有未处理的异常。
变量 selectedBlockTexture 是在这个 for 循环之外声明的,并且循环会遍历字典以自动生成按钮,这些按钮可以让我更改 selectedBlockTexture 变量的值。
for (auto it : blockDict) {
auto newBlockButton = Button::create("button-block-basic.png", "button-block-basic.png", button-block-basic.png");
auto buttonImage = Sprite::create(it.first);
newBlockButton->setPosition(Vec2(76 * blockDictIter, 64));
buttonImage->setPosition(Vec2(76 * blockDictIter, 64));
buttonImage->setGlobalZOrder(2);
buttonImage->setScale(0.75);
newBlockButton->addTouchEventListener([&](Ref* sender, Widget::TouchEventType type) {
switch (type)
{
case ui::Widget::TouchEventType::BEGAN:
break;
case ui::Widget::TouchEventType::ENDED:
chosenBlockTexture = it.first
break;
default:
break;
}
});
blockDictIter++;
newBlockButton->setGlobalZOrder(1);
this->addChild(newBlockButton);
this->addChild(buttonImage);
}
【问题讨论】:
标签: cocos2d-x