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,则出现无法再进入外推断体的情况。
时间: 2024-11-06 03:54:28