2013-05-27 25 views
0

因此,我正在寻找触摸另一个孩子的特定精灵,这是一个节点的孩子。结构是当另一个精灵的孩子不保留相对位置时,CCSprites不保留相对位置

CCNode 
    CCSprite | tag = 1 | node local coordinate = 0, 0 
     CCSprite | tag = 2 | node local coordinate = 26.5, 133.5 

我想检测何时触摸第二个CCSprite。所以,我标记它们像例子,在节点上,像这样

-(BOOL) touchIsInBoundingBox:(UITouch *) touch withEvent:(UIEvent *) event 
{ //node local coordinates 
    CCSprite * s = (CCSprite *)[self getChildByTag:1]; 
    CCSprite * t = (CCSprite *)[s getChildByTag:2]; 
    CGPoint local = [self convertTouchToNodeSpace:touch]; 
    return CGRectContainsPoint(t.boundingBox, local); 
} 

运行在触摸的方法现在,这应该工作,但事实证明是t返回它的boundingBox的作为相对于自身的坐标,而不是由其位置修改。有没有办法让边界框检查相对于节点的精灵的位置,而不是相对于它本身?

回答

1
CGPoint local = [s convertTouchToNodeSpace:touch]; 

想要转换为父级的节点空间,在本例中为s

+0

你知道吗,我忘了我曾问过这个问题,因为询问的动作让我思考,我自己回答。无论如何,谢谢你这个:)未来的人可能会找到这个答案。 –