2
我使用的Cocos2D开发一个迷你iPhone游戏..我想检测精灵的触摸。要做到这一点,我决定不子类CCSprite类,而是使用层类的触摸事件:如何访问UITouch locationInWindow坐标
-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
CCLOG(@"touch began...");
CCSprite *particularSprite = [self getChildByTag:artSprite];
CCNode *nodeClass = (CCNode*) particularSprite;
CGRect DesiredSprite = CGRectMake(nodeClass.positionInPixels.x, nodeClass.positionInPixels.y,particularSprite.contentSize.width , particularSprite.contentSize.height);
for (UITouch *myTouch in touches) {
CGPoint touchPosition = [myTouch locationInView: [myTouch view]];
if(CGRectContainsPoint(DesiredSprite ,touchPosition))
{
CCLOG(@"Sprite touched");
}
}
}
不幸的是,坐标是错误的。 locationInView翻译它不同。我正在使用landscapeleft视图(kCCDeviceOrientationLandscapeLeft)。
添加的功能,断点,看的myTouch变量,然后我看到,它有一个名为locationInWindow成员变量,它反映了实际触摸位置(这是我想要的)。
我试图访问到locationInWindow但它没有getter方法。我该怎么做?
非常感谢和诚挚的问候
您好,感谢,这也帮助..我不得不转换位置交换X到Y的景观视野的..想知道是否有一个自动化的方式来做到这一点。我没有使用boundingBox的矩形比较针对如如先前创建完成一个矩形不是精确(它不与x中的原点和y作为SPRIE创建)。谢谢 :)! – mm24 2012-02-11 18:37:04
同时,文档指出,你可以通过'nil'获得窗口坐标。 – 2013-02-12 23:13:17