代码之家  ›  专栏  ›  技术社区  ›  Sadat

CCSprite操作问题:循环移动-[从左退出到右进入]永远执行此操作

  •  0
  • Sadat  · 技术社区  · 14 年前

    这是我的密码,我一直在尝试-

    -(void) animatedMove:(CCSprite *)character 
    {
        ccTime actualDuration = 10;
        id actionMove = [CCMoveBy actionWithDuration:actualDuration
                                            position:ccp(screen_width+50, character.position.y)];
        id actionBack = [CCMoveBy actionWithDuration:1
                                            position:ccp(50, screen_height/2)];
        id actionFinished = [CCCallFuncN actionWithTarget:self
                                                selector:@selector(animatedMoveFinished:)];
        [character runAction:[CCSequence actions:actionMove,actionBack,actionFinished,nil]];
    }
    
    -(void) animatedMoveFinished:(id)sender 
    {
        CCSprite *character = (CCSprite *)sender;
        [self animatedMove:character];
    
        NSLog(@"( %.2f, %.2f", character.position.x, character.position.y);
    }
    

    它将字符移出屏幕,而不重新初始化到起始位置。

    1 回复  |  直到 14 年前
        1
  •  1
  •   David Higgins    14 年前

    看起来你希望它从左边出现,从右边退出,从左边重新出现,等等。。。

    ccTime actualDuration = 10;
    id actionMoveBy = [CCMoveBy actionWithDuration:actualDuration
        position:ccp(screen_width+50, character.position.y];
    id actionMoveTo = [CCMoveTo actionWithDuration: 0.0f position: character.position];
    id actionSequence = [CCSequence actions: actionMoveBy, actionMoveTo, nil];
    [character runAction: [CCRepeatForever actionWithAction: actionSequence]];
    

    这将“永久循环”(由于使用了“CCRepeatForever”),导致字符对象从其原始起始位置转到屏幕的最右侧(使用您已经应用的ccp()数学),然后紧接着它将“立即移动”(由于持续时间为0秒)回到其原始起始位置,然后重复。。。