【问题标题】:Cocos2d iPhone CCClippingNode doesn't do the clipCocos2d iPhone CCClippingNode 不做剪辑
【发布时间】:2013-09-29 15:28:58
【问题描述】:

这是我尝试在其上绘制图像和孔的代码。 (代码来自cocos2d测试项目)

    CCSprite *target = [CCSprite spriteWithFile:@"blocks.png"];
    target.anchorPoint = CGPointZero;
    target.scale = 3;

    CCClippingNode *outerClipper_ = [[CCClippingNode clippingNode] retain];
    outerClipper_.contentSize = CGSizeApplyAffineTransform(target.contentSize, CGAffineTransformMakeScale(target.scale, target.scale));
    outerClipper_.anchorPoint = ccp(0.5, 0.5);
    outerClipper_.position = ccpMult(ccpFromSize([CCDirector sharedDirector].winSize), 0.5);

    outerClipper_.stencil = target;

    CCClippingNode *holesClipper = [CCClippingNode clippingNode];
    holesClipper.inverted = YES;
    holesClipper.alphaThreshold = 0.05;

    [holesClipper addChild:target];

    CCNode *holes_ = [[CCNode node] retain];

    [holesClipper addChild:holes_];

    CCNode *holesStencil_ = [[CCNode node] retain];

    holesClipper.stencil = holesStencil_;

    [outerClipper_ addChild:holesClipper];

    [self addChild:outerClipper_ z:9999];


// Add the hole

    CCSprite *hole = [CCSprite spriteWithFile:@"hole_effect.png"];
    hole.position = [outerClipper_ convertToNodeSpace:ccpMult(ccpFromSize([CCDirector sharedDirector].winSize), 0.5)];

    [holes_ addChild:hole];

    CCSprite *holeStencil = [CCSprite spriteWithFile:@"hole_stencil.png"];
    holeStencil.position = [outerClipper_ convertToNodeSpace:ccpMult(ccpFromSize([CCDirector sharedDirector].winSize), 0.5)];

    [holesStencil_ addChild:holeStencil];

所有图片都可以在cocos2d测试项目中找到。

问题是图像出现了,但上面没有孔。我做错了什么?

【问题讨论】:

    标签: cocos2d-iphone clipping


    【解决方案1】:

    问题是我没有正确设置我的 CCGLView。我必须将深度格式设置为 GL_DEPTH24_STENCIL8_OES 而不是值 0。

    【讨论】:

    • 知道在哪里为 android 设置它吗?我在 android 目录中的任何地方都找不到深度格式属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 2015-01-14
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    相关资源
    最近更新 更多