bool sign2 = true;
bool sign2 = true;
void GameLayer::onTouchMoved(Touch *touch, Event *unused){
if(sign){
sign = false;
**
if(sign2){
CCLOG("RUNNING!");
sign2 = false;
sign = true;
}else{
sign2 = true;
}
** }
}
假设上述代码顺序执行,则会出现无限循环的RUNNING的LOG:
RUNNING!
RUNNING!
......
但实际上并不会出现无限个running,仅仅可能出现一个或者两个RUNNING!
推測:
触摸时onTouchMoved会多次被调用,进入if(sign)推断里面的不止一个触摸事件。这样即sign被赋值true后又被赋值false,则出现无法再进入外推断体的情况。