C++ 如何从cocos2d-x回调函数调用非阻塞函数?
我有方法在触摸内部动作或触摸DraginsideAction导致控制按钮延迟或按下按钮时动作迟缓C++ 如何从cocos2d-x回调函数调用非阻塞函数?,c++,callback,cocos2d-x,nonblocking,C++,Callback,Cocos2d X,Nonblocking,我有方法在触摸内部动作或触摸DraginsideAction导致控制按钮延迟或按下按钮时动作迟缓 我正在使用cocos2d-x-3.0alpha1扩展插件中的控制按钮 但是当我尝试从按钮回调调用方法时 按钮按下行为为堆叠或缓慢 例如: auto backgroundButton = Scale9Sprite::create("extensions/button.png"); auto backgroundHighlightedButton = Scale9Sprite::crea
我正在使用cocos2d-x-3.0alpha1扩展插件中的控制按钮
但是当我尝试从按钮回调调用方法时
按钮按下行为为堆叠或缓慢
例如:
auto backgroundButton = Scale9Sprite::create("extensions/button.png");
auto backgroundHighlightedButton = Scale9Sprite::create("extensions/buttonHighlighted.png");
auto titleButton = LabelTTF::create("Touch Me!", "Marker Felt", 30);
titleButton->setColor(Color3B(159, 168, 176));
ControlButton *controlButton = ControlButton::create(titleButton, backgroundButton);
controlButton->setBackgroundSpriteForState(backgroundHighlightedButton, Control::State::HIGH_LIGHTED);
controlButton->setTitleColorForState(Color3B::WHITE, Control::State::HIGH_LIGHTED);
controlButton->setAnchorPoint(Point(0.5f, 1));
controlButton->setPosition(Point(screenSize.width / 2.0f, screenSize.height / 2.0f));
addChild(controlButton, 1);
// Sets up event handlers
controlButton->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::touchDownAction), Control::EventType::TOUCH_DOWN);
controlButton->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::touchDragInsideAction), Control::EventType::DRAG_INSIDE);
controlButton->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::touchDragOutsideAction), Control::EventType::DRAG_OUTSIDE);
controlButton->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::touchDragEnterAction), Control::EventType::DRAG_ENTER);
controlButton->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::touchDragExitAction), Control::EventType::DRAG_EXIT);
controlButton->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::touchUpInsideAction), Control::EventType::TOUCH_UP_INSIDE);
controlButton->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::touchUpOutsideAction), Control::EventType::TOUCH_UP_OUTSIDE);
controlButton->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::touchCancelAction), Control::EventType::TOUCH_CANCEL);
// test for issue 2882
controlButton->addTargetWithActionForControlEvents(this, cccontrol_selector(HelloWorld::touchBitmaskAction),
Control::EventType::TOUCH_DOWN | Control::EventType::DRAG_INSIDE | Control::EventType::DRAG_OUTSIDE | Control::EventType::DRAG_ENTER | Control::EventType::DRAG_EXIT | Control::EventType::TOUCH_UP_INSIDE | Control::EventType::TOUCH_UP_OUTSIDE | Control::EventType::TOUCH_CANCEL | Control::EventType::VALUE_CHANGED);
现在,我尝试从以下位置调用该方法:
void HelloWorld::touchUpInsideAction(Object *sender, Control::EventType controlEvent)
{
//_displayValueLabel->setString(String::createWithFormat("Touch Up Inside.")->getCString());
CCLOGWARN("touchUpInsideAction");
this->pFliteManager->talk("A");
}
或来自
void HelloWorld::touchDownAction(Object *senderz, Control::EventType controlEvent)
{
//_displayValueLabel->setString(String::createWithFormat("Touch Down")->getCString());
CCLOGWARN("touchDownAction");
this->pFliteManager->talk("A");
}
该功能执行得很好,但按钮没有点击效果
为什么?我很困惑。您是否有一个缓慢、缓慢或完全没有按下的效果?每次发生其他情况时,都会遇到执行无阻塞方法调用的问题