1

ユーザーが画面に触れるとスプライトが表示されるプログラムを作成しようとしています。ただし、ユーザーがそのスプライトに指を置いたままにしておくと、スプライトはユーザーが離すまで大きくなります。

このプログラムを Cocos2d 1.x で作成したところ、問題なく動作しました。ただし、2.x で試してみると、スプライトは作成されますが、スプライトの成長には役立ちません。コードは次のとおりです。

-(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event{

CGPoint touchLocation = [self convertTouchToNodeSpace:touch];

redBall = [CCSprite spriteWithFile:@"Circle.png"];
redBall.position = ccp(touchLocation.x, touchLocation.y);
redBallRect = CGRectMake(redBall.anchorPoint.x, redBall.anchorPoint.y, redBall.contentSize.width, redBall.contentSize.height);

[self addChild:redBall];




if (CGRectContainsPoint(redBallRect, touchLocation )) {
    NSLog(@"Hello");
    growForever = [CCRepeatForever actionWithAction: [CCScaleBy actionWithDuration: .5 scale: 1.2]];
    [growForever setTag:1];
    [redBall runAction:growForever];

}

return YES;

}

何が問題で、どうすれば解決できますか?

4

1 に答える 1

0

タッチが有効になっていることを確認してください:

-(void)onEnter
{
    [super onEnter];

      self.touchEnabled = YES;
}

rect を取得するには、boundingBox を使用します。

- (void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *myTouch = [touches anyObject];
    CGPoint touchLocation = [myTouch locationInView:[myTouch view]];
    touchLocation = [[CCDirector sharedDirector] convertToGL:touchLocation];


    if(CGRectContainsPoint([redBall boundingBox], touchLocation))
    {
        NSLog(@"Hello");
        growForever = [CCRepeatForever actionWithAction: [CCScaleBy actionWithDuration: .5 scale: 1.2]];
        [growForever setTag:1];
        [redBall runAction:growForever];

    }

}
于 2012-12-23T07:31:01.820 に答える