我正在使用UIPanGestureRecognizer
检测我的应用中的滑动。手势识别器正确触发,但是当我设置变量或尝试从其中调用函数时,变量被设置但是,在下一次迭代(例如我的tick函数)中,未设置变量。就好像它是在不同的实例上设置它?任何人都可以帮助我吗?
所以_ApplyForce
在handlePan
函数中设置为true但是当我尝试在其他地方读取它时(在我的tick函数中)它总是假的。
更新:我添加了所有地方_ApplyForce用于帮助显示它的使用方式。此外,我使用此变量触发力冲动的原因是因为this question我无法在手势功能中触发力,经过一些调查后发现我无法改变或改变任何力类变量 - 因此是新问题。
AppDelegate.mm:
- (void) applicationDidFinishLaunching:(UIApplication*)application
{
....
HelloWorldLayer *layer = (HelloWorldLayer *) [[HelloWorldLayer scene].children objectAtIndex:0];
UIPanGestureRecognizer *gestureRecognizer = [[[UIPanGestureRecognizer alloc] initWithTarget:layer action:@selector(handlePanFrom:)] autorelease];
[viewController.view addGestureRecognizer:gestureRecognizer];
}
HelloWorldLayer.h
@interface HelloWorldLayer : CCLayer
{
...
bool _ApplyForce;
}
HelloWorldLayer.mm
- (id)init {
if ((self=[super init])) {
_ApplyForce = false;
}
}
- (void)tick:(ccTime) dt {
_world->Step(dt, 10, 10);
if (_ApplyForce)
{
NSLog(@"apply force");
b2Vec2 force = b2Vec2(200, 200);
_body->ApplyLinearImpulse(force,_body->GetWorldCenter());
_ApplyForce = false;
}
}
- (void)handlePanFrom:(UIPanGestureRecognizer *)recognizer {
if (recognizer.state == UIGestureRecognizerStateEnded) {
_ApplyForce=true;
}
}
答案 0 :(得分:0)
是不是因为在你的tick方法中,如果_ApplyForce为true,语句的结尾会将其设置为false?这意味着在它成立之后立即就是假的。
我可能会建议添加一些NSLog来跟踪刻度和_ApplyForce状态。