我有一种情况,如果满足一个条件,则必须禁用其他条件,即使它们在下一阶段变为真。
基本上我有一个每次移动精灵时都会触发的方法。我想将移动限制在单轴上,所以当它开始在x轴上移动时,它只能在x上移动,直到拖动结束。
我正在寻找一种优雅的方式来做到这一点,而不是保持观察 4 个变量状态。
例如,在伪代码中,我需要完成以下操作(对于x轴):
if sprite starts to move along the X axis:
set state == moveRight
if sprite moves more then 1 pixel on the Y axis and moveRight == true:
do nothing
这是我目前拥有的:
void GameController::handleTouchMoved(CCTouch* touch)
{
// right
if(dragX > dragPrevX)
{
pSelectedCurrent->setPosition(ccp(pSelectedCurrent->getPositionX()+movmentSpeed,pSelectedCurrent->getPositionY()));
}
// left
else if(dragX < dragPrevX)
{
pSelectedCurrent->setPosition(ccp(pSelectedCurrent->getPositionX()-movmentSpeed,pSelectedCurrent->getPositionY()));
}
// up
else if(dragY > dragPrevY)
{
pSelectedCurrent->setPosition(ccp(pSelectedCurrent->getPositionX(),pSelectedCurrent->getPositionY()+movmentSpeed));
}
// down
else if(dragY < dragPrevY)
{
pSelectedCurrent->setPosition(ccp(pSelectedCurrent->getPositionX(),pSelectedCurrent->getPositionY()-movmentSpeed));
}
}