调整CCLayer的大小。不缩放

时间:2012-08-17 15:17:31

标签: cocos2d-iphone

我有CCLayer,应该从上到下“取消屏蔽”。

我在访问前和访问后实施GLScissor来削减图层边界内的内容:

#pragma mark Clipping
-(void)visit {
    [self preVisit];
    [super visit];
    [self postVisit];
}
-(void)preVisit {
    if (!self.visible)
        return;

    glEnable(GL_SCISSOR_TEST);
    CGRect clipRect = [self boundingBox];
    CGPoint origin = [self convertToWorldSpaceAR:clipRect.origin];
    CGRect scissorRect = CGRectMake(origin.x - self.anchorPoint.x * clipRect.size.width, 768 - origin.y - self.anchorPoint.y * clipRect.size.height, clipRect.size.width, clipRect.size.height);

    scissorRect = CC_RECT_POINTS_TO_PIXELS(scissorRect);

    glScissor((GLint) scissorRect.origin.x, (GLint) scissorRect.origin.y,
          (GLint) scissorRect.size.width, (GLint) scissorRect.size.height);
}
-(void)postVisit {
    glDisable(GL_SCISSOR_TEST);
}

我通过将contentSize设置为1024x0并使用预定呼叫来增加CCLayer

-(void) grow {
    float height = [self contentSize].height + 2;
    if (height >= 768){
        [self unschedule:@selector(grow)];
        height = 768;
    }
    [self setContentSize:CGSizeMake(1024, height)];
}

这就像一个魅力。 CCLayer在高度上稳步增长,并且完全未被掩盖。但是,我不能使用任何缓动函数,因为我没有使用任何操作。

是否有任何操作可以调整CCLayer(不缩放)的大小以允许我使用缓动函数,还是有其他(更好)的方法来执行此操作?

0 个答案:

没有答案