求助,小球未移动到指定位置,碰撞检测已经开启

需求:鼠标点击某个位置后,小球移动到此位置,过程中判断是否有撞击,有撞击则把方块隐藏显示。
问题:指定位置如果会发生撞击,则小球还没有到碰撞点,方块就已经先被隐藏了。
求大神帮小妹看看啊

bool MainScene::init()
{
if (!CCScene::init())
{
return false;
}
_visibleSize = Director::getInstance()->getVisibleSize();
_origin = Director::getInstance()->getVisibleOrigin();

_ball = Ball::create();
this->addChild(_ball);

_box = Box::create();
this->addChild(_box,0,1);


auto s = Director::getInstance()->getWinSize();
_labelAction = Label::createWithTTF("Click mouse button and see this change", "fonts/arial.ttf", 22);
_labelAction->setPosition(Vec2(s.width / 2, s.height * 2 / 3));
addChild(_labelAction, 0);

//Create a label to display the mouse position
_labelPosition = Label::createWithTTF("Mouse not supported on this device", "fonts/arial.ttf", 22);
_labelPosition->setPosition(Vec2(s.width / 2, s.height / 3));
addChild(_labelPosition);

_mouseListener = EventListenerMouse::create();
_mouseListener->onMouseMove = CC_CALLBACK_1(MainScene::onMouseMove, this);
_mouseListener->onMouseUp = CC_CALLBACK_1(MainScene::onMouseUp, this);
_mouseListener->onMouseDown = CC_CALLBACK_1(MainScene::onMouseDown, this);
_mouseListener->onMouseScroll = CC_CALLBACK_1(MainScene::onMouseScroll, this);

_eventDispatcher->addEventListenerWithSceneGraphPriority(_mouseListener, this);
schedule(schedule_selector(MainScene::update));
return true;

}

void MainScene::onMouseUp(Event event)
{
EventMouse
e = (EventMouse*)event;
std::string str = "Mouse Up detected, Key: ";
str += tostr(static_cast(e->getMouseButton()));
_labelAction->setString(str.c_str());

int dvaluex = (_ball->getPositionX() - e->getCursorX()) / 10;
int dvaluey = (_ball->getPositionY() - e->getCursorY()) / 10;
int i = abs(dvaluex);

auto des = Vec2(e->getCursorX(), e->getCursorY());
_mousex = e->getCursorX();
_mousey = e->getCursorY();
_ball->flyTo(des);

}
void MainScene::update(float dt) {
//碰撞检测
if (this->getChildByTag(1))
{
if (checkOutCollision())
{
log(“crack happened!!!”);
crackmove();
this->removeChild(_box);
_ifcrack = 1;
}
}
}

BALL 类中的flyto
void Ball::flyTo(Vec2 targetInWordSpace)
{
auto visibleSize = Director::getInstance()->getVisibleSize();
auto origin = Director::getInstance()->getVisibleOrigin();
auto startInWordSpace = Vec2(visibleSize.width / 2 + origin.x, visibleSize.height / 1.1 + origin.y);

float dist = ccpDistance(_ballxy, targetInWordSpace);
//设置的初始位置
setVisible(true);

MoveTo* moveTo = CCMoveTo::create(dist /_ballspeed, targetInWordSpace-startInWordSpace);//构建子弹移动的动作,
CCCallFunc* callFunc = CCCallFunc::create(this, SEL_CallFunc(&Ball::setballxy));
//return moveTo;
CCSequence * sequence = CCSequence::create(moveTo, callFunc, NULL);//构造一个动画序列
runAction(sequence);
_ballxyold = _ballxy;
_ballxy = (targetInWordSpace);

}

用secquence 更新坐标,但是是顺序执行,如何让小球边移动边更新位置,判断是否有撞击呢?