0

ここで質問があります。(id)init 関数でいくつかのスプライト (タグ付き) を作成しましたが、どのスプライトがタッチされたかを検出しようとしているだけですか? 私の init 関数からのコードのスニペットを以下に貼り付けます。

    [[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"blue_sheet.plist"];
    //create a sprite batch node
    CCSpriteBatchNode *TrainerSprites = [CCSpriteBatchNode batchNodeWithFile:@"blue_sheet.png"];
    [self addChild:TrainerSprites z:1];

    //create a sprite from that node
    CCSprite *Horse = [CCSprite spriteWithSpriteFrameName:@"horse_blue.png"];
    [TrainerSprites addChild:Horse z:1 tag:1];
    //Horse.position = ccp(winSize.width/5, winSize.height/2);
    [Horse setScaleX: 138.5/Horse.contentSize.width];
    [Horse setScaleY: 80/Horse.contentSize.height];

    //create a sprite from that node
    CCSprite *Cow = [CCSprite spriteWithSpriteFrameName:@"cow_blue.png"];
    [TrainerSprites addChild:Cow z:1 tag:2];
    //Cow.position = ccp(winSize.width/2, winSize.height/2);
    [Cow setScaleX: 126/Cow.contentSize.width];
    [Cow setScaleY: 100/Cow.contentSize.height];

    Horse.position = ccp(4*winSize.width/5, winSize.height/2);
    Cow.position = ccp(winSize.width/5, winSize.height/2);

    CGRect pos1 = CGRectMake(Cow.position.x, Cow.position.y, 200, 100);
    CGRect pos2 = CGRectMake(Horse.position.x, Horse.position.y, 200, 100);

    self.touchEnabled = YES;

すべて問題ないように見えます...そして、スプライトは本来あるべき場所に表示されます。画面のどこかをタッチすると、ccTouchBegan 関数が起動します。CGRect で何も起こらないので、割り当てられたタグによって起動されたものを特定する必要があると思います。はい、確かに、コードが不足していることはわかっています。この一見基本的なios機能を実行する方法をどこにも見つけることができません。「スプライト タッチ検出」コードは ccTouchBegan 関数内にあると思いますか? ヘルプやガイダンスを心から感謝します。:)

4

2 に答える 2

0

スプライトタッチを検出するには、これを使用できます

CCSprite *Cow.h セクションで宣言します

および .m セクションでは、これ
を init メソッドで使用します

//create a sprite from that node
    Cow = [CCSprite spriteWithSpriteFrameName:@"cow_blue.png"];
    [TrainerSprites addChild:Cow z:1 tag:2];
    //Cow.position = ccp(winSize.width/2, winSize.height/2);
    [Cow setScaleX: 126/Cow.contentSize.width];
    [Cow setScaleY: 100/Cow.contentSize.height];

連絡を取り始めた方法

 -(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    {    
        UITouch * touch =[touches anyObject];
        CGPoint location=[touch locationInView:[touch view]];
        location =[[CCDirector sharedDirector] convertToGL:location];
        if (CGRectContainsPoint( [Cow boundingBox], location)) {

               /* CCScene *scene = [CCScene node];
                [scene addChild:[ClassicScene node]];
                [[CCDirector sharedDirector] replaceScene:scene];*/
            }

    }
于 2013-09-23T09:04:15.077 に答える