3

基本的に、SpriteKit プロジェクトで UIScrollView を作成する必要がありますが、SKButtons (ボタン管理用のカスタム SKNode クラス) の追加に多くの問題があります。そこで、タッチ ジェスチャを使用してスクロール可能な SKNode を作成しましたが、明らかに、このバーにはネイティブの UIScrollView アクセラレーション (探していた機能) がありません。

そのため、ネイティブ UIScrollView を追加してこの問題を克服し、次のように位置のすべての変更をキャッチしようとしました。

ここに画像の説明を入力

このコードを使用して:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    [blueNode setPosition:CGPointMake(blueNode.position.x, scrollerUI.contentOffset)];
}

これは正しく機能しますが、愚かなことに、ボタンを追加すると、タッチジェスチャがボタンのタッチイベントを認識しないことを忘れていました! (UIScrollView が優先されます)。

たぶんばかげた質問かもしれませんが、それを理解する方法が本当にわかりません。たぶん、独自の加速方法をプログラミングしていますか?

4

2 に答える 2

2

考えられる解決策の 1 つは、タップ ジェスチャをシーンに追加することです。

override func didMoveToView(view: SKView) {
    let tap : UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: Selector("tapped:"))
    view.addGestureRecognizer(tap)
}

func tapped(tap : UITapGestureRecognizer) {
    let viewLocation = tap.locationInView(tap.view)
    let location = convertPointFromView(viewLocation)
    let node = nodeAtPoint(location)

    if node.name == "lvlButton" {
        var button = node as! SKButton
        button.touchBegan(location)
    }
}
于 2015-02-26T19:05:37.180 に答える