我试图运行一个包含3个参数的if语句,其中一个参数是方法是否正在运行。让我在下面展示我的代码,并试图澄清。
-(void) btnRightTapped: (id) sender{
CCLOG(@"Left button Tapped");
CGSize viewSize = [CCDirector sharedDirector].viewSize;
if (_claw.position.x >= viewSize.width || _claw.position.x >= 1 && // HERE I WANT TO ADD THE ARGUMENT) {
// Do stuff
[self schedule:@selector(btnRightTapped:) interval:0.1];
}
else [self unschedule:@selector(btnRightTapped:)];
}我要添加的参数是测试btnRightTapped方法当前是否正在运行,如下所示:
-(void) btnLeftTapped: (id) sender{
CCLOG(@"Right button Tapped");
CGSize viewSize = [CCDirector sharedDirector].viewSize;
if (_claw.position.x < viewSize.width && // AND HERE) {
// Do stuff
[self schedule:@selector(btnLeftTapped:) interval:0.1];
}
else [self unschedule:@selector(btnLeftTapped:)];
}我想要完成的是当按下按钮时移动我的爪精灵。目前,它只适用于将爪移到一边,当您试图将其移回时,if语句再次变为真,两个按钮的时间表都会打开和关闭,这使得精灵像疯了一样来回跳。
因此,我需要使用当前参数运行if语句,加上另一个按钮/方法没有按下/正在运行的参数。我该怎么做?
简而言之,这就是我想要的:
if (_claw.position.x < viewSize.width && btnRightTapped.is.active == NO)
{
do this and that发布于 2014-11-13 21:40:29
当另一个方法被调度时,您能试着取消另一个方法的调度吗?就像这样:
-(void) btnRightTapped: (id) sender{
CCLOG(@"Left button Tapped");
CGSize viewSize = [CCDirector sharedDirector].viewSize;
if (_claw.position.x >= viewSize.width || _claw.position.x >= 1) {
CCLOG(@"Left button Tapped inside if statement");
float clawSpeed = - viewSize.width / 10.0;
float distanceToMoveClaw = clawSpeed;
float newXClaw = _claw.position.x + distanceToMoveClaw;
float newYClaw = _claw.position.y;
_claw.position = ccp(newXClaw, newYClaw);
[self schedule:@selector(btnRightTapped:) interval:0.1];
[self unschedule:@selector(btnLeftTapped:)]; // New line here
}
else [self unschedule:@selector(btnRightTapped:)];
}
-(void) btnLeftTapped: (id) sender{
CCLOG(@"Right button Tapped");
CGSize viewSize = [CCDirector sharedDirector].viewSize;
if (_claw.position.x < viewSize.width) {
float clawSpeed = viewSize.width / 10.0;
float distanceToMoveClaw = clawSpeed;
float newXClaw = _claw.position.x + distanceToMoveClaw;
float newYClaw = _claw.position.y;
_claw.position = ccp(newXClaw, newYClaw);
[self schedule:@selector(btnLeftTapped:) interval:0.1];
[self unschedule:@selector(btnRightTapped:)]; // New line here
}
else [self unschedule:@selector(btnLeftTapped:)];
}发布于 2014-11-13 21:26:21
使用ivar中的布尔标志来指示您已“计划”运行的工作。当您执行“取消计划”时,将其设置为NO。
https://stackoverflow.com/questions/26918224
复制相似问题