用另一个 CCSprite/CCNode 剪辑 CCSprite/CCNode - Cocos2D

Posted

技术标签:

【中文标题】用另一个 CCSprite/CCNode 剪辑 CCSprite/CCNode - Cocos2D【英文标题】:Clip CCSprite/CCNode with another CCSprite/CCNode - Cocos2D 【发布时间】:2015-01-14 13:21:11 【问题描述】:

但是,我可以在 ios 中使用本机编码进行剪辑,因为我希望使用 SpriteBuilder 移植到 android 我想使用 Cocos2D 剪辑 2 个 CCSprite。

我希望做以下事情:

我见过只支持 Cocos2D 2 的库,但我使用的是最新版本,但这些库似乎不再工作。

我将如何实现这种效果?

【问题讨论】:

这是 cocos2d 的问题吗?如果是,请显示您的代码、您尝试过的内容以及对您不起作用的内容……如果是 Spritebuilder 问题,请不要标记 cocos2d。 Cocos2D 问题。我找不到我尝试过但适用于 Cocos2d V 2 的库...我知道 Stencil 但不知道如何将它应用到这个上下文中 【参考方案1】:

对于任何寻求类似修复的人,以下是 Cocos2D 的原生版本。

//Get Screen size
    CGSize winSize = [[CCDirector sharedDirector] viewSize];

//Set Clipping Sprite
    CCSprite *heroClip = [CCSprite spriteWithImageNamed:@"stamina/MenuHappinessWhite.png"];
    heroClip.position = ccp(winSize.width/2, winSize.height/2); // Middle of screen

//Set Sprite below Clipping
    CCSprite *heroUnder = [CCSprite spriteWithImageNamed:@"stamina/MenuLevel.png"];
    heroUnder.position = ccp(winSize.width/2, winSize.height/2);
    heroUnder.scaleY = 0.5f;

    // Create Clipping Node
    CCClippingNode *scissor = [CCClippingNode clippingNodeWithStencil:heroClip];
    [scissor setContentSize:self.contentSize];
    [scissor setPositionType:CCPositionTypeNormalized];

    [scissor setAlphaThreshold:0.0];

    //[scissor setInverted:YES];
    [self addChild:scissor];

    // Add nodes to Clipping Node
    [scissor addChild:heroUnder];

并将其添加到应用委托

   //Load Clipping Mask
    [cocos2dSetup setObject:@GL_DEPTH24_STENCIL8_OES forKey:CCSetupDepthFormat];

【讨论】:

以上是关于用另一个 CCSprite/CCNode 剪辑 CCSprite/CCNode - Cocos2D的主要内容,如果未能解决你的问题,请参考以下文章

剪辑软件PR的使用技巧都有哪些?

用另一个数组替换部分数组的最佳方法[重复]

C++ 用另一个向量扩展一个向量

用另一个模式替换二维数组中的模式

Symfony - 用另一个实体的 id 重载实体集函数

在 Actionscript 2 中立即引用影片剪辑类实例