トグルスイッチを作成しています。ToggleNodeを含むCCLayerを含むCCSceneがあります。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;
}
ToggleNodeに触れると、次のようになります。
bounding box: 512.000000, 384.000000, 512.000000, 384.000000
touch: 508.000000, 378.000000
これにより、バウンディングボックスはゼロのままであると私は信じています。しかし、なぜ?保持の問題?私はまだcocos2dで学習していますが、これは正常な動作ではないと思います。