1

抽象的なタッチを始めた方法で私を助けてください。私はシーンでこのメソッドを持っています.VZChurchはSKSpriteNodeです. SKSpriteNode のサブクラス内で touches begin メソッドを転送する方法はありますか? 5-6 if else ステートメントでは決定が輝かないと思うので、SKSpriteNode のすべてのサブクラスで touches begin メソッドを移行する方法を見つけようとしています

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInNode:self.mapStaticGeometry];
    SKNode *node = [self.mapStaticGeometry nodeAtPoint:location];

    if ([node.name isEqualToString:@"church"]) {

        VZChurch *obj = (VZChurch *)node;
        obj.requestedAnimation = VZAnimationStateTouch;
        [obj runAnimation];
    } else if ...n iterations
}
4

1 に答える 1

0

あなたが求めていることを避ける最善の方法は、ノードごとにan SKNode(または) をサブクラス化することです。SKSpriteNodeこれによりtouchesBegan、サブクラス化されたノードの内部を処理できます。

したがって、SKNode (または VZChurch はスプライトであるため SKSpriteNode) をサブクラス化し、独自のメソッド ファイルであるtouchesBeganinを処理するだけです。VZChurch次に、他の SKSprite がある場合は、同じことを行い、各スプライトをサブクラス化touchesBeganし、それぞれのサブクラス化されたメソッド ファイル内を処理します。

于 2014-03-17T19:10:30.280 に答える