我有一个使用手指滑动移动的玩家精灵(ccTouchBegan 到 ccTouchMoved)。我希望在 TouchEnded 后停止我的动作,但我不希望它在中途结束动作。所以我想我需要我的 onCallFunc 来检查触摸是否结束,如果是的话让它执行 stopAllActions。关于如何做到这一点的任何想法?
-(void) onCallFunc
{
// Check if TouchEnded = True if so execute [Player stopAllActions];
CCLOG(@"End of Action... Repeat");
}
-(无效)ccTouchMoved:
//Move Top
if (firstTouch.y < lastTouch.y && swipeLength > 150 && xdistance < 150 && xdistance > -150) {
CCMoveTo* move = [CCMoveBy actionWithDuration:0.2 position:ccp(0,1)];
CCDelayTime* delay = [CCDelayTime actionWithDuration:1];
CCCallFunc* func = [CCCallFunc actionWithTarget:self selector:@selector(onCallFunc)];
CCSequence* sequence = [CCSequence actions: move, delay, func, nil];
CCRepeatForever* repeat = [CCRepeatForever actionWithAction:sequence];
[Player runAction:repeat];
NSLog(@"my top distance = %f", xdistance);
}
if (firstTouch.y < lastTouch.y && swipeLength > 151 && xdistance < 151 && xdistance > -151) {
NSLog(@"my top distance = %f", xdistance);
}
}
我想要实现的目标:我试图通过让玩家使用触摸事件逐块移动来模拟 Pokemon 和 Zelda 等游戏中的动作。
更新:在创建 BOOL 标志的评论后,我在使用 Objective-C 方面很新,但这里是我尝试使用 BOOL 标志。我收到每个部分的未使用变量警告。
-(void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
BOOL endBOOL = YES;
NSLog(@"Stop Actions");
}
-(void) onCallFunc
{
if(endBOOL == YES){
[Player stopAllActions];
}
// Check if TouchEnded = True if so execute [Player stopAllActions];
CCLOG(@"End of Action... Repeat");
}