簡體   English   中英

SKScene的UIPanGestureRecognizer

[英]UIPanGestureRecognizer in SKScene

我一直在嘗試使用UIGestureRecognizersSKScene/SKNode'sSKScene/SKNode's SpriteKit 我有一個問題,我接近修復它但我對一件事感到困惑。 基本上,我有一個平移手勢識別器,允許用戶在屏幕上拖動精靈。

我遇到的唯一問題是,實際初始化平移手勢需要一次點擊,然后只有在SECOND上點擊它才能正常工作。 我想這是因為我的pan手勢在touchesBegan被初始化了。 但是,我不知道在哪里放置它,因為在SKScene的initWithSize方法中初始化它會使手勢識別器停止實際工作。

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    if (!self.pan) {

        self.pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(dragPlayer:)];
        self.pan.minimumNumberOfTouches = 1;
        self.pan.delegate = self;
        [self.view addGestureRecognizer:self.pan];
    }
}

-(void)dragPlayer: (UIPanGestureRecognizer *)gesture {

        CGPoint trans = [gesture translationInView:self.view];

        SKAction *moveAction =  [SKAction moveByX:trans.x y:-trans.y  duration:0];
        [self.player runAction:move];

        [gesture setTranslation:CGPointMake(0, 0) inView:self.view];
    }

那是因為你在觸摸開始時添加了手勢,所以在屏幕被點擊至少一次之前手勢就不存在了。 另外,我會驗證您實際上是在使用initWithSize:作為初始化程序,因為在那里添加手勢應該沒有任何問題。

另一種選擇是移動代碼以將手勢添加到-[SKScene didMovetoView:] ,在場景出現后立即調用。 更多信息在文檔中

- (void)didMoveToView:(SKView *)view
{
    [super didMoveToView:view];
    // add gesture here!
}

這是我的第一篇文章! 希望不要絆倒我自己的腳趾......

大家好,所以我遇到了UISwipeGestureRecognizer無法正常工作的問題。 我在我的initWithSize方法中初始化它所以基於這篇文章我將它移動到我的didMoveToView方法。 現在它可以工作(感謝0x7fffffff)。 我所做的就是從一種方法中剪切以下兩行,然后將它們粘貼到另一種方法中。

_warpGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(warpToNextLevel:)];
[self.view addGestureRecognizer:_warpGesture];

在我的“調查”中,我遇到了userInteractionEnabled並嘗試在我的initWithSize方法中將其設置為YES ...

self.view.userInteractionEnabled = YES;
NSLog(@"User interaction enabled %s", self.view.userInteractionEnabled ? "Yes" : "No");

即使我將其設置為YES,這也會記錄NO。 進一步的調查發現,如果我不嘗試手動設置userInteractionEnabled,那么在initWithSize期間它是NO(如果我想的話我似乎無法改變它)並且當我在didMoveToView時自動設置為YES。

這一切都讓我覺得相關,但我希望知道的人解釋這里發生了什么。 謝謝!

暫無
暫無

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

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