Cocos2D касается CGRects?
Я пытаюсь по существу разделить экран на четыре разные части с четырьмя различными ритами, например:
CGFloat screenHeight = [UIScreen mainScreen].bounds.size.width;
CGFloat screenWidth = [UIScreen mainScreen].bounds.size.height;
CGRect jumpleftRect = CGRectMake(0, screenHeight/2, screenWidth/2, screenHeight/2); //1
CGRect runleftRect = CGRectMake(0, 0, screenWidth/2, screenHeight/2); //2
CGRect jumprightRect = CGRectMake(screenWidth/2, screenHeight/2, screenWidth/2, screenHeight/2); //3
CGRect runrightRect = CGRectMake(screenWidth/2, 0, screenWidth/2, screenHeight/2); //4
А затем я перебираю touchArray и проверяю, было ли место касания внутри, скажем, например, для этого вопроса, первое прямоугольник:
NSArray *touchArray = [NSMutableArray arrayWithArray:touchArray];
for (UITouch *touchInArray in touchArray) {
CGPoint toucharrayPosition = [touchInArray locationInNode:self];
if (CGRectContainsPoint(jumpleftRect, toucharrayPosition)) { //1st rect }
Однако кажется, что прямоугольник находится в совершенно неправильном месте. Это никогда не вызывается, хотя мой палец явно находится в верхней левой части экрана. Мои anchorPoints нетронуты и нормальны, поэтому я не уверен, почему это не работает. Есть ли какая-то конкретная причина, по которой касания не регистрируются, как в ритах, хотя в ретроспективе они должны быть?
2 ответа
Не уверен, было ли это новым поведением в iOS 8, но я просто изменил свои screenWidth и screenHeight на это:
CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height;
CGFloat screenWidth = [UIScreen mainScreen].bounds.size.width;
Теперь все работает очень гладко и приятно.
Вот что посмотреть -
Верны ли значения, которые вы получаете от UIScreen? Есть ли причина, по которой вы используете UIScreen, а не свойство viewSize в CCDirector (при использовании v3, winSize при использовании v2)?
Вы включили касания, и этот код, который у вас внутри касания, начал или завершил метод? Если так, то когда вы отлаживали, вы получили правильное положение экрана из locationInNode? Также во время отладки правильны ли текты?