在另一个CCLayer的顶部添加一个带有框架的CClayer?

时间:2012-02-02 12:59:54

标签: iphone ios cocos2d-iphone

我有一个CCLayer类,我将从另一个类中添加另一个CClayer对象。但我想添加CCLayer对象只有一个框架,而它被添加到整个屏幕,我无法分别触摸下面的图层和添加的图层。如何添加具有特定帧的cclayer对象?

2 个答案:

答案 0 :(得分:0)

除非我忘记了某些内容,否则应该为您不希望接收NO的图层设置isTouchEnabled标志这么简单。所以......就像......

CCLayer* myTopLayer;
CCLayer* myBottomLayer;

myTopLayer.isTouchEnabled = YES;
myBottomLayer.isTouchEnabled = NO;

现在只有顶层应该接收触摸。您可以做的另一个技巧是将底层缩放到一个非常小的值,这样用户就无法触摸它。有点像...

myBottomLayer.scale = 0.01f;

然后在准备好时将其缩放回1.0。

答案 1 :(得分:0)

我不相信你可以“构图”一个图层,但你可以“框架”在图层中处理触摸的位置,类似于:

- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event{
    if (!visible_ || !_enabled) {
      return NO;
    }
    CGPoint loc = [touch locationInView:touch.view];
    loc = [[CCDirector sharedDirector] convertToGL:loc];

    return [self containsPoint:loc]);
}

- (BOOL) containsPoint:(CGPoint)loc {
    loc = [self convertToNodeSpace:loc];
    CGRect rect = CGRectMake('WHATEVER FRAME YOU WANT TOUCHES FOR');
    return CGRectContainsPoint(rect, loc); 
}