gpt4 book ai didi

ios - Cocos2d 边界框保持为零

转载 作者:行者123 更新时间:2023-11-28 18:06:59 25 4
gpt4 key购买 nike

我正在创建一个切换开关。我有一个 CCScene,其中包含一个包含 ToggleNode 的 CCLayer。 ToggleNode 使用我放入的 Sprite 和标签正确显示。触摸处理不起作用,因为 ToggleNode 的边界框似乎保持为零。我在 CCLayer 中捕捉到了触摸(它在输入 ccTouchBegan:withEvent: 时工作)并且我有这段代码:

- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
CGPoint touchLocation = [self convertTouchToNodeSpace:touch];

NSLog(@"bounding box: %f, %f, %f, %f", toggleNode.boundingBox.origin.x, toggleNode.boundingBox.origin.y, toggleNode.boundingBox.origin.x + toggleNode.boundingBox.size.width, toggleNode.boundingBox.origin.y + toggleNode.boundingBox.size.height);
NSLog(@"touch: %f, %f", touchLocation.x, touchLocation.y);

if (CGRectContainsPoint(toggleNode.boundingBox, touchLocation)) {
[toggleNode toggle];
}

return NO;
}

触摸 ToggleNode 会导致:

bounding box: 512.000000, 384.000000, 512.000000, 384.000000
touch: 508.000000, 378.000000

这让我相信边界框保持为零。但为什么?保留问题?我仍在学习 cocos2d,但我不认为这是正常行为。

最佳答案

如果 ToggleNode 派生自 CCNode,则此行为是正常的。 CCNode 有一个大小为 0 的边界框,contentSize 属性也为零。

如果您从 CCNode 派生您的类,则由您将 contentSize 属性(这也会更新边界框)设置为它应该具有的任何大小。

只有当您使用使用纹理的类(CCSprite、CCLabelTTF 和其他)时,cocos2d 才会自行设置 contentSize。

关于ios - Cocos2d 边界框保持为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11448756/

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