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? Также во время отладки правильны ли текты?

Другие вопросы по тегам