我有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
(不缩放)的大小以允许我使用缓动函数,还是有其他(更好)的方法来执行此操作?