0

2 つの CCLayers を互いに積み重ねています。どちらもタッチ対応です。最上層の CCLayer がタッチに応答して消費し、最下層が最上層が消費するタッチに反応しないようにします。

最上層には、次のような CCTouchBegan メソッドがあります。

- (BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
    NSLog(@"touched!");

    CGPoint location = [touch locationInView:[touch view]];
    location = [[CCDirector sharedDirector] convertToGL:location];

    //DO STUFF WITH TOUCH

    return YES;
}

最下層には、次のような CCTouchesEnded メソッドがあります。

- (void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    //choose one of the touches to work with
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInView:[touch view]];
    location = [[CCDirector sharedDirector] convertToGL:location];

    //DO STUFF WITH THE TOUCH
}

その結果、最上位レイヤーはタッチを消費せず、まったく応答しません。最下層のみがタッチに反応します。

4

1 に答える 1

0

最初のレイヤーでは、CCTargetedTouchDelegate のメソッドを使用します。CCLayer は自分自身を CCStandardTouchDelegate として登録します。これが、2 番目のレイヤーがタッチに反応する理由です。

于 2012-07-13T21:34:08.487 に答える