具有Alpha高于父级的ChildNode

时间:2014-08-20 06:47:19

标签: ios sprite-kit

我的游戏区域充当半透明背景,可以在其上面添加一些东西。我将背景的alpha设置为0.7(因为我想看到它下面)

现在,我创建了一堆精灵节点,它们是这个半透明背景的子节点,它继承了父节点(背景)的alpha。无论如何我可以阻止它吗?

代码示例:

_cardAreaBackground = [SKSpriteNode spriteNodeWithImageNamed:@"background_cardarea"];
[_cardAreaBackground setName:kCardAreaBackgroundKeyword];
[_cardAreaBackground setAnchorPoint:CGPointZero];
[_cardAreaBackground setPosition:CGPointMake([self determineCardAreaBackgroundX],         [_infoBarBackground size].height)];
[_cardAreaBackground setZPosition:10];
[_cardAreaBackground setAlpha:0.3];
[self addChild:_cardAreaBackground];

SKSpriteNode *drawPile = [SKSpriteNode spriteNodeWithImageNamed:@"card_back"];
[drawPile setName:kCardAreaBackgroundKeyword];
[drawPile setAnchorPoint:CGPointZero];
[drawPile setPosition:CGPointMake( 120 + 1954, 10 )];
[drawPile setZPosition:11];
[drawPile setScale:0.3125];
[_cardAreaBackground addChild:drawPile];

你可以看到我上面要做的事情。如果这不是正确的方法,请告诉我。我这样做的原因我实际上在这个“卡片背景区域”中有3个部分,用户可以在我想要在那里看到不同的东西之间滑动。

2 个答案:

答案 0 :(得分:6)

而不是设置alpha尝试使用alpha设置背景颜色,它应该有效 -

[_cardAreaBackground setBackgroundColor:[[UIColor whiteColor] colorWithAlphaComponent:0.3]] 

您可以提供所需的颜色,而不是[UIColor whiteColor]。

答案 1 :(得分:2)

你可以简单地制作背景以及孩子在另一个精灵上精灵制作孩子。因此,背景不会影响它上面的节点。

_cardTable = [SKNode new];

_cardAreaBackground = [SKSpriteNode spriteNodeWithImageNamed:@"background_cardarea"];
[_cardAreaBackground setName:kCardAreaBackgroundKeyword];
[_cardAreaBackground setAnchorPoint:CGPointZero];
[_cardAreaBackground setZPosition:10];
[_cardAreaBackground setAlpha:0.3];
[cardTable addChild:_cardAreaBackground];

SKSpriteNode *drawPile = [SKSpriteNode spriteNodeWithImageNamed:@"card_back"];
[drawPile setName:kCardAreaBackgroundKeyword];
[drawPile setAnchorPoint:CGPointZero];
[drawPile setPosition:CGPointMake( 120 + 1954, 10 )];
[drawPile setZPosition:11];
[drawPile setScale:0.3125];
[cardTable addChild:drawPile];

[cardTable setPosition:CGPointMake([self determineCardAreaBackgroundX],         [_infoBarBackground size].height)];

[self addChild:cardTable];