mmv*_*vie 0 bounding-box cocos2d-iphone ios
我正在创建一个切换开关.我有一个包含CCLayer的CCScene,其中包含一个ToggleNode.ToggleNode正确显示我输入的精灵和标签.触摸处理不起作用,因为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;
}
Run Code Online (Sandbox Code Playgroud)
触摸ToggleNode会导致:
bounding box: 512.000000, 384.000000, 512.000000, 384.000000
touch: 508.000000, 378.000000
Run Code Online (Sandbox Code Playgroud)
这让我相信边界框保持为零.但为什么?保留问题?我还在学习cocos2d,但我不认为这是正常行为.
如果ToggleNode是从CCNode派生的,则此行为是正常的.CCNode具有0大小的边界框,而contentSize属性也为零.
如果从CCNode派生类,则由您将contentSize属性(这也更新边界框)设置为它应具有的任何大小.
只有当您使用使用纹理的类(CCSprite,CCLabelTTF等)时,cocos2d才会自行设置contentSize.
| 归档时间: |
|
| 查看次数: |
2244 次 |
| 最近记录: |