簡體   English   中英

SpriteKit檢測按下並按住標簽

[英]SpriteKit Detect Press and Hold on Label

我正在嘗試制作一個用戶可以按按鈕以提高某些技能水平的應用。 但是,我使用的是“ 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];
  }
}

有沒有一種方法可以在小精靈或標簽上執行按住並按下手勢? 因此,用戶只需按住升級按鈕,它會增加多次而不是連續單擊?

任何和所有建議表示贊賞!

讓成員在封閉的類中引用技能按鈕,然后在該按鈕上開始操作以增加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];停止節點的操作[self.skillButton removeAllActions]; 不管位置在哪里(因為用戶可以滑動手指,所以位置會有所不同)

不知道最干凈的解決方案是否對您有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM