Я пытаюсь позволить пальцем перетащить CCSprite со следующим кодом:Почему это только обнаруживает штрихи в центре CCSprites?
-(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
CGPoint location = [touch locationInView: [touch view]];
CGPoint convertedCoordinate = [[CCDirector sharedDirector] convertToGL:location];
CGRect redCircleRect = CGRectMake(redCircle.position.x, redCircle.position.y, redCircle.contentSize.width, redCircle.contentSize.height);
CGRect redCircle2Rect = CGRectMake(redCircle2.position.x, redCircle2.position.y, redCircle2.contentSize.width, redCircle2.contentSize.height);
if(CGRectContainsPoint(redCircleRect, convertedCoordinate)) {
//redCircle.position = ccp(convertedCoordinate.x, convertedCoordinate.y);
NSLog(@"Touched");
spriteIndex = 1;
}
else if(CGRectContainsPoint(redCircle2Rect, convertedCoordinate)) {
//redCircle2.position = ccp(convertedCoordinate.x, convertedCoordinate.y);
NSLog(@"Touched2");
spriteIndex = 2;
}
else {
spriteIndex = 0;
}
return YES;
}
-(void)ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event {
CGPoint location = [touch locationInView: [touch view]];
CGPoint convertedCoordinate = [[CCDirector sharedDirector] convertToGL:location];
if (spriteIndex == 1) {
redCircle.position = ccp(convertedCoordinate.x, convertedCoordinate.y);
}
else if (spriteIndex == 2) {
redCircle2.position = ccp(convertedCoordinate.x, convertedCoordinate.y);
}
//CGRect RedCircleRect = CGRectMake(redCircle.position.x, redCircle.position.y, redCircle.contentSize.width, redCircle.contentSize.height);
//CGRect RedCircle2Rect = CGRectMake(redCircle.position.x, redCircle.position.y, redCircle.contentSize.width, redCircle.contentSize.height);
}
Моя логика заключается в следующем:
В ccTouchesBegan
я получаю местоположение прикосновения, преобразовать его в правильные координаты, тогда сделайте два CGRect, которые, предположительно, будут такими же размерами и местоположением двух описанных мной спрайтов. Затем, я проверяю, касается ли палец одного из этих двух прямоугольников, используя CGRectContainsPoint
. Там у меня есть глобальный int, называемый spriteIndex
, который присваивает значение в зависимости от того, какой круг был затронут.
Далее, в ccTouchesMoved
Я проверяю, был ли указатель spriteIndex
«индексом» одного из двух спрайтов, которые я пытаюсь переместить, и если да, укажите расположение спрайта, выбранного в месте касания.
Проблема:
Этот код только вид работ. Это позволяет мне перетаскивать CCSprites, но только если я щелкнул по центру. И спрайт 40 на 40 пикселей, поэтому он отнюдь не мал.