gpt4 book ai didi

iphone - 如何获取由子 Sprite 组成的CCSprite的高度和宽度(Cocos2D)

转载 作者:行者123 更新时间:2023-12-03 20:51:27 24 4
gpt4 key购买 nike

我有这样的东西

CCSprite *rootSprite = [CCSprite node];
CCSprite *subSpriteOne = [CCSprite spriteWithFile:@"sprite1.png"];
subSpriteOne.position = ccp(10, 10);
[rootSprite addChild:subSpriteOne];
CCSprite *subSpriteTwo = [CCSprite spriteWithFile:@"sprite2.png"];
subSpriteTwo.position = ccp(100, 100);
[rootSprite addChild:subSpriteTwo];

我的问题是属性 rootSprite.size.height 和 rootSprite.size.width 都返回 0.0。有没有办法让 rootSprite 返回节点及其子节点在屏幕上占用的实际高度和宽度?

最佳答案

你可以做到,但你必须自己进行计算。标准内容大小属性返回 Sprite 纹理的大小,但由于 Sprite 没有纹理,因此大小为 0。

那你做什么呢?那么,您将必须编写自己的方法来查看 Sprite 的每个子级,并考虑它们的大小以及与根 Sprite 位置的偏移量。如果您不知道要向根添加多少个 Sprite ,则可能会变得有点复杂,但您可以编写一般情况。

-(CGSize) getSizeOfRootSprite:(CCSprite*)root
{
float minX = 0;
float minY = 0;
float maxX = root->getContentSize().width;
float maxY = root->getContentSize().height;
for (CCSprite *child in root.children)
{
CGPoint pos = child.position;
CGSize size = child.contentSize;
if (pos.x - size.width/2 < minX) minX = pos.x - size.width/2;
if (pos.y - size.height/2 < minY) minY = pos.y - size.height/2;
if (pos.x + size.width/2 > maxX) maxX = pos.x + size.width/2;
if (pos.y + size.height/2 > maxY) maxY = posY + size.height/2;
}
return CGSizeMake(maxX - minX, maxY - minY);
}

换句话说,您必须检查每个子 Sprite 并检查其大小如何影响根 Sprite 的整体大小。

关于iphone - 如何获取由子 Sprite 组成的CCSprite的高度和宽度(Cocos2D),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14366189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com