Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.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
C++ 如何从cocos2d-x回调函数调用非阻塞函数?_C++_Callback_Cocos2d X_Nonblocking - Fatal编程技术网

C++ 如何从cocos2d-x回调函数调用非阻塞函数?

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

我有方法在触摸内部动作或触摸DraginsideAction导致控制按钮延迟或按下按钮时动作迟缓
我正在使用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");
}
该功能执行得很好,但按钮没有点击效果
为什么?

我很困惑。您是否有一个缓慢、缓慢或完全没有按下的效果?每次发生其他情况时,都会遇到执行无阻塞方法调用的问题