1

ゲーム用にズームおよびパン可能なマップを作成しています(CCPanZoomControllerを使用)。このマップ内にタップ可能なスプライトが欲しいのですが、タップすると「何かをする」…</ p>

2つのことを別々のプロジェクトで完全に機能させることができますが、それらを組み合わせようとすると、スプライトをタップしても何も起こりません。

さらに示すために画像を含めました: 私が欲しいもののデモ

//in my init section


        self.isTouchEnabled = YES;

            mapBase = [CCSprite spriteWithFile:@"MapBase.png"];
            mapBase.anchorPoint = ccp(0, 0);
            [self addChild:mapBase z:-10];

            gym = [CCSprite spriteWithFile:@"Gym.png"];
            gym.scale = 0.3;
            gym.position = ccp(1620, 250);
            [self addChild:gym z:1];

            CGRect boundingRect = CGRectMake(0, 0, 2499, 1753);
            _controller = [[CCPanZoomController controllerWithNode:self] retain];
            _controller.boundingRect = boundingRect;
            _controller.zoomOutLimit = _controller.optimalZoomOutLimit;
            _controller.zoomInLimit = 2.0f;
            [_controller enableWithTouchPriority:1 swallowsTouches:YES];
//end of init

    -(void) registerWithTouchDispatcher
    {
        [[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self
                                                                  priority:0 swallowsTouches:NO];
    }

    -(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event{
        CGPoint touchPoint1 = [touch locationInView:[touch view]];

        if (CGRectContainsPoint(gym.boundingBox, touchPoint1)) return YES;

        return NO;

    }

    -(void) ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event{
        CGPoint touchPoint2 = [touch locationInView:[touch view]];
        if (CGRectContainsPoint(gym.boundingBox, touchPoint2)){
            CCLOG(@"SPRITE HAS BEEN TAPPED");
        }
    }

マップ全体(「ジム」スプライトを含む)をズームイン/ズームアウトおよびパンできるようにしたい。そして、スプライト「ジム」がユーザーによってタップされた場合、私は「何かをしたい」と思います。

誰かがこれを理解できれば、私は非常に感謝します!ありがとう。

4

0 に答える 0