我有一个CCLayer类,我将从另一个类中添加另一个CClayer对象。但我想添加CCLayer对象只有一个框架,而它被添加到整个屏幕,我无法分别触摸下面的图层和添加的图层。如何添加具有特定帧的cclayer对象?
答案 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);
}