我正在尝试创建一个应用,用户可以按下按钮来提高某些技能水平。但是,我正在使用" touchesBegan"方法,如果用户想要将技能升级25分,则用户必须单击标签25次。这是我目前检测用户是否触摸了精灵的代码。
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
CGPoint location = [touch locationInNode:self];
SKNode *node = [self nodeAtPoint:location];
if([node.name isEqualTo:@"red-upgrade"]){
if(_xp >= pow(_rpower+1, 2)){
_rpower ++;
_xp -= pow(_rpower, 2);
}
_rpowerlabel.text = [NSString stringWithFormat:@"Red Power: %i", _rpower];
}
}
有没有办法在精灵或标签上实现保持和按下手势?因此,用户只需按住升级按钮即可增加多次而不是连续点击?
赞赏任何和所有建议!
答案 0 :(得分:1)
让一个成员引用封闭类中的技能按钮,然后在按钮上启动一个操作以增加touch begin方法中所需的值:
if([node.name isEqualTo:@"red-upgrade"]){
[self.skillButton runAction:[SKAction repeatForever:[SKAction sequence:@[[SKAction waitForDuration:0.5],
[SKAction runBlock:^{
if(self.xp >= pow(self.rpower+1, 2)){
self.rpower ++;
self.xp -= pow(self.rpower, 2);
}
self.rpowerlabel.text = [NSString stringWithFormat:@"Red Power: %i", self.rpower]
}]]]]];
}
我使用了一个小延迟,否则值会非常快地增加(除非你想要的)。
在touchEnd
方法中停止节点与[self.skillButton removeAllActions];
的操作,无论位置在哪里(从那时起,用户可以滑动他的手指,位置也会不同)
不确定最干净的解决方案是否适用于您