首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查另一种方法在使用cocos2d的调度时是否正在工作:方法

检查另一种方法在使用cocos2d的调度时是否正在工作:方法
EN

Stack Overflow用户
提问于 2014-11-13 20:54:55
回答 2查看 157关注 0票数 0

我试图运行一个包含3个参数的if语句,其中一个参数是方法是否正在运行。让我在下面展示我的代码,并试图澄清。

代码语言:javascript
复制
-(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方法当前是否正在运行,如下所示:

代码语言:javascript
复制
-(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语句,加上另一个按钮/方法没有按下/正在运行的参数。我该怎么做?

简而言之,这就是我想要的:

代码语言:javascript
复制
if (_claw.position.x < viewSize.width && btnRightTapped.is.active == NO) 
{    
    do this and that
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-13 21:40:29

当另一个方法被调度时,您能试着取消另一个方法的调度吗?就像这样:

代码语言:javascript
复制
-(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:)];
}
票数 1
EN

Stack Overflow用户

发布于 2014-11-13 21:26:21

使用ivar中的布尔标志来指示您已“计划”运行的工作。当您执行“取消计划”时,将其设置为NO

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26918224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档