这是我的ccTouchesMoved方法。 怎么了?我使用cocos2d框架。
-(void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
CCNode *sprite = [self getChildByTag:kTagPlayer];
CCNode *sprite2 = [self getChildByTag:kTagEnemy];
CGPoint point;
//Собрать все касания.
NSSet *allTouches = [event allTouches];
for (UITouch *touch in allTouches)
{
point = [touch locationInView:[touch view]];
point = [[CCDirector sharedDirector] convertToGL:point];
if (point.y > 384)
{
if (point.x > 992)
sprite2.position = ccp(992, size.height - 100);
else if (point.x < 32)
sprite2.position = ccp(32, size.height - 100);
else
sprite2.position = ccp(point.x, size.height - 100);
}
else
{
if (point.x > 992)
sprite.position = ccp(992, 100);
else if (point.x < 32)
sprite.position = ccp(32, 100);
else
sprite.position = ccp(point.x, 100);
}
}
}
答案 0 :(得分:4)
您是否在glView中启用了多个触控功能?默认情况下,glView在app delegate中实例化。代码如下。
[glView setMultipleTouchEnabled:YES];
答案 1 :(得分:2)
如果您正在开发Retina显示应用程序,请注意所有坐标都是以点为单位,而不是像素。因此,即使在960x640像素的Retina显示屏上,点的坐标(您的触摸位置)也将在480x320范围内。
如果您想使用像素,请使用所有坐标的“InPixels”版本,在这种情况下:
sprite.positionInPixels = ccp(992, 100);
如果这不是问题,您应该在帖子中添加预期结果是什么以及会发生什么。一点点背景都有很长的路要走。
答案 2 :(得分:1)
调试器在allTouches中说了什么?您可以尝试获取此类视图的所有内容:
UITouch* touch = [touches anyObject];
NSSet* allTouches = [touches setByAddingObjectsFromSet:[event touchesForView:[touch view]]];