Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在另一个CClayer上添加一个框架的CClayer?_Iphone_Ios_Cocos2d Iphone - Fatal编程技术网

Iphone 在另一个CClayer上添加一个框架的CClayer?

Iphone 在另一个CClayer上添加一个框架的CClayer?,iphone,ios,cocos2d-iphone,Iphone,Ios,Cocos2d Iphone,我有一个CCLayer类,在它上面我从另一个类添加了另一个CCLayer对象。但是我只想在将CCLayer对象添加到整个屏幕时添加一个帧,我无法单独接触下面的层和添加的层。如何添加具有特定帧的cclayer对象???除非我忘记了一些事情,它应该像为不希望接收触摸的层设置isTouchEnabled标志一样简单。因此类似于 CCLayer* myTopLayer; CCLayer* myBottomLayer; myTopLayer.isTouchEnabled = YES; myBottomL

我有一个CCLayer类,在它上面我从另一个类添加了另一个CCLayer对象。但是我只想在将CCLayer对象添加到整个屏幕时添加一个帧,我无法单独接触下面的层和添加的层。如何添加具有特定帧的cclayer对象???

除非我忘记了一些事情,它应该像为不希望接收触摸的层设置isTouchEnabled标志一样简单。因此类似于

CCLayer* myTopLayer;
CCLayer* myBottomLayer;

myTopLayer.isTouchEnabled = YES;
myBottomLayer.isTouchEnabled = NO;
myBottomLayer.scale = 0.01f;
现在只有最上面的一层应该接受触摸。你可以做的另一个诀窍是将底层缩放到一个非常小的值,这样用户就不会碰到它。类似于

CCLayer* myTopLayer;
CCLayer* myBottomLayer;

myTopLayer.isTouchEnabled = YES;
myBottomLayer.isTouchEnabled = NO;
myBottomLayer.scale = 0.01f;

准备好后,将其缩放回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); 
}

太糟糕了,无法添加具有特定帧的CClayer